고집 :
나는 다음과 같은 코드가 있습니다 :
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의 발을 호출하기 때문에 true를 반환 (). 몇 가지 조사 후, 나는이 자바에서 예상되는 것을 이해했다. 그렇게 A.에서 가능 불리는 때, 나는 B에서 호출 할 때 잘못된 인쇄 테스트 () 및 사실을 하시겠습니까?
그들은했다 :
코드를 호출하는 이유 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;
}
}