사용 가능한 경우, 서브 클래스 '방법

고집 :

나는 다음과 같은 코드가 있습니다 :

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에서 호출 할 때 잘못된 인쇄 테스트 () 및 사실을 하시겠습니까?

그들은했다 :

코드를 호출하는 이유 Aval()하지가 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;
    }
}

추천

출처http://10.200.1.11:23101/article/api/json?id=410219&siteId=1