마지막 줄의 parent.getX()를 실행하는 부분에서, Parent 클래스의 메소드 getX()가 실행되어 x*y를 리턴할 때, x가 왜 Child의 속성 x인 10이 아닌지 궁금합니다.
부모 클래스와 자식 클래스 모두 동일한 이름을 가진 속성(메소드 아님) x를 가지고 있으니
Parent 클래스에서 x를 사용한다면 Child 클래스의 속성 x로 재정의하여 사용하는 것 아닌가요?
안녕하세요 길벗수험서 운영팀입니다.
자바에서 상속은 자식 클래스가 부모 클래스의 멤버(필드·메서드)를 물려받아 재사용하는 개념입니다
자식 클래스가 부모의 필드를 그대로 가져오더라도, 자식에서 같은 이름의 필드를 새로 선언하면 두 개의 필드를 갖게 됩니다.
이때 자식의 필드는 this.a, 부모의 필드는 super.a로 구분되며,
단순 a는 현재 클래스에서 선언된 필드를 우선 사용합니다.
따라서 부모클래스의 getX( ) 가 실행되면 부모클래스의 x가 사용되는것입니다
행복한 하루되세요 :)
-
관리자2026-03-09 18:59:35
안녕하세요 길벗수험서 운영팀입니다.
자바에서 상속은 자식 클래스가 부모 클래스의 멤버(필드·메서드)를 물려받아 재사용하는 개념입니다
자식 클래스가 부모의 필드를 그대로 가져오더라도, 자식에서 같은 이름의 필드를 새로 선언하면 두 개의 필드를 갖게 됩니다.
이때 자식의 필드는 this.a, 부모의 필드는 super.a로 구분되며,
단순 a는 현재 클래스에서 선언된 필드를 우선 사용합니다.
따라서 부모클래스의 getX( ) 가 실행되면 부모클래스의 x가 사용되는것입니다
행복한 하루되세요 :)