使用抽象类
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;
}
}
这就是导致错误的原因。
慕标琳琳
相关分类