使用子类的方法(如果适用)



我有以下代码:

public class A {
private boolean val(){
return true;
}
protected boolean test(){
return val();
}
}
public class B extends A {
private boolean val(){
return false;
}
}
public class C {
public static void main(String[] args){
B b = new B();
System.out.println(b.test());
}
}

它返回true,因为A中的test((方法调用了A的val((。经过一番研究,我明白这在Java中是意料之中的事。然而,我希望test((在从B调用时打印false,在从A调用时打印true。有可能做到吗?

代码调用Aval()而不是Bval()的原因是val()方法具有private访问修饰符,因此无法重写。将访问修饰符更改为protected
public class A {
protected boolean val(){
return true;
}
protected boolean test() {
return val();
}
}
public class B extends A {
protected boolean val() {
return false;
}
}

相关内容

最新更新