我们不能将接口中的抽象方法声明为protected和default(即使我们没有提到任何访问说明符(默认)编译器将其视为公共)
但我们可以将抽象类中的抽象方法声明为protected和default。
为什么抽象类和接口有不同的规则?
答案 0 :(得分:6)
因为抽象类的抽象方法意味着是子类的钩子。另一方面,接口不关心实现细节 - 它们仅与契约与“外部世界”有关。受保护的方法是一个实现细节。
答案 1 :(得分:2)
我们不能将接口中的抽象方法声明为protected和defaul
接口的目的是宣布合同。您的客户将实施它,并且必须public
。
界面中的字段默认为public
static
final
,
你得到的公共,静态,因为它没有实现就无法实例化,也不能继承它。
<强>更新强> 根据你的问题
你想要应用一些你的实现者看不到的严格约束..然后抽象类中抽象方法的用法必须由继承层次结构中的任何具体类实现...那么没有人会具体课程
public class BaseAbstractClass {
private Connection getConnection(){
//somecode
}
public boolean save(){
//get connection and do something
//return ;
}
//your implementor is left to implement it , he can use save method but can'ge see what it does i mean i doesn't have access to getConnection
public abstract void saveEntity();
}