使用抽象类abstract class A { abstract int getInt();}和实施public class AImp extends A{ @Override private int getInt() { return 1; }}我得到的错误是我不能给这个方法比它已经拥有的更少的访问权限。我想将抽象方法实现为私有方法。我理解为什么我不能在Aand中定义抽象方法private abstract,因为这会使实现无法看到该方法,但是为什么实现不能简单地将抽象方法设为私有?理由:我有两个类具有相同的方法,这取决于私有方法:public class AImp1{ private int getInt() { return 1; } protected void print10Int() { for (int i = 0; i < 10; i++){ System.out.println(getInt()); } }}public class AImp2{ private int getInt() { return 0; } protected void processInt() { for (int i = 0; i < 10; i++){ System.out.println(getInt()); } }}为了避免代码重复,我想将该方法放在抽象超类中,但这迫使我也将私有方法作为抽象超类的一部分:abstract class A { abstract int getInt(); protected void print10Int() { for (int i = 0; i < 10; i++){ System.out.println(getInt()); } }}由于我想要AImp1和AImp2以前一样,我想getInt私有化:public class AImp1 extends A{ @Override private int getInt() { return 1; }}这就是导致错误的原因。
1 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
因为它被用作类的签名/接口的一部分。假设我知道 A 类的孩子将有方法 Foo(),但是当我尝试访问扩展 A 类的 B 类的 Foo() 时,我不能,因为它是私有的。这没有道理。
添加回答
举报
0/150
提交
取消