代码调用
我有以下代码:
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。有可能做到吗?
A
的val()
而不是B
的val()
的原因是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;
}
}