7.10 1. A의 생성 방법으로 이동하여 Object의 빈 매개변수 생성을 완료합니다. 2.int I=7 3.setI(20)은 하위 클래스의 setI()를 호출합니다. 이때 하위 클래스의 I는 60이고 상위 클래스의 I는 여전히 7입니다. 4.이 .i는 현재 상위 클래스에서 7입니다. (참고: 변수는 실제 호출자에 따라 다르며 이는 현재 상위 클래스입니다. 이 메서드는 재정의되었기 때문에 하위 클래스라고 합니다.) 5.int I=10은 원래 60을 덮어씁니다. 6, 이것을 인쇄하세요.i 이번에는 10입니다.
60.60 참고: 하위 클래스의 I를 삭제하면 기본적으로 상위 클래스의 I가 호출됩니다 3. 이때 하위 클래스의 setI를 호출하여 상위 클래스에 할당합니다. 상위 클래스는 60으로 변경됩니다. 5. 현재 재정의는 없습니다. this.i는 기본적으로 상위 클래스에서 상속된 I(60)를 호출합니다.
실행 순서는 다음과 같습니다.
으아아아A.i
및B.i
은 모두 패키지 전용이며B.i
에는 재정의A.i
가 없으며 둘은 독립적입니다.은 모두 공개이며,
A.setI
재정의B.setI
, 생성 중 A가 호출하는 것은B.setI
;A.setI
B.setI
입니다.은 먼저 super에서
super()
에 의해 60으로 설정된 다음 B의 멤버 초기화에 의해 10으로 설정됩니다.B.i
B.setI
을 삭제한 후 A와 B가 같은 패키지에 있는 경우
는
int i = 10;
에 접근하며, super()시 A.i를 60으로 설정한 이후에는 아무런 변화가 없으며, 두 번 인쇄되었습니다. 둘 다 60B.setI
상위 클래스에 이미 존재하는 멤버를 하위 클래스에 선언하면 오류가 발생하지 않나요? 최소한 경고여야 합니다.
질문이 너무 사악하다고밖에 할 수 없습니다. 실제 개발에서는 이렇게 쓰는 것이 불가능합니다.
7.10
1. A의 생성 방법으로 이동하여 Object의 빈 매개변수 생성을 완료합니다.
2.int I=7
3.setI(20)은 하위 클래스의 setI()를 호출합니다. 이때 하위 클래스의 I는 60이고 상위 클래스의 I는 여전히 7입니다.
4.이 .i는 현재 상위 클래스에서 7입니다. (참고: 변수는 실제 호출자에 따라 다르며 이는 현재 상위 클래스입니다. 이 메서드는 재정의되었기 때문에 하위 클래스라고 합니다.)
5.int I=10은 원래 60을 덮어씁니다.
6, 이것을 인쇄하세요.i 이번에는 10입니다.
60.60
참고: 하위 클래스의 I를 삭제하면 기본적으로 상위 클래스의 I가 호출됩니다
3. 이때 하위 클래스의 setI를 호출하여 상위 클래스에 할당합니다. 상위 클래스는 60으로 변경됩니다.
5. 현재 재정의는 없습니다. this.i는 기본적으로 상위 클래스에서 상속된 I(60)를 호출합니다.
Degbug의 중요성에 대하여...