그래서 한 친구가이 코드를 보내고 성공적으로 컴파일하고 42를 반환했다고 말했습니다. 하지만 부모 클래스의 메소드는 귀찮은 문제입니다. "return"은 private이고, 호출 된 메소드는 자식 클래스에 있으며 public입니다. 그럼, 왜 누군가가 어떻게 작동하는지 말할 수 있습니까?java, 상속 - 부모의 비공개 필드가 자식의 public 메서드를 통해 액세스 됨
static class A {
private int f() {
return 42;
}
}
static class B extends A {
public int f2() {
return super.f();
}
}
public static void main(String[] args) {
System.out.print(new B().f2());
}
내가 정적을 제거하려고 42
반환하고,
class A {
private int f() {
return 42;
}
}
class B extends A {
public int f2() {
return super.f();
}
}
public static void main(String[] args) {
Main m= new Main();
B b= m.new B();
System.out.print(b.f2());
}
는 여전히 클래스 (A
및 B
) 모두 이후 42