頑固な:
私は、次のコードを持っています:
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());
}
}
Aでのテスト()メソッドは、Aさんのval()を呼び出すためにはtrueを返します。いくつかの研究の後、私はこれはJavaで期待されていることがわかります。しかし、私はAから呼び出されたときにBから呼び出された場合はfalseを印刷し、真のために)(テストをしたいと思いますそれを行うには、それは可能ですか?
彼らは次のとおりでした:
あなたのコードの呼び出し理由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;
}
}