Blog

클래스 상속시 참조 변수와 인스턴스 관계

클래스를 상속받아 인스턴스를 생성시 다형성을 지원하므로 참조 변수 타입을 부모, 자손클래스 타입을 사용할 수 있습니다. 이때 참조 타입에 따라 인스턴스 멤버의 참조가 달라지는데 확인을 위해 Parent 클래스를 상속한 Son클래스를 만들어 두었습니다.

Parent 클래스를 상속한 Son클래스를 가지고 인스턴스를 생성하고 이를 참조하는 변수 fson, sson의 타입을 각각 Parent, Son으로 선언하였습니다.

위의 결과에서 볼 수 있듯이 멤버 변수의 경우 참조 타입에 따라 참조하는 멤버 변수가 달라지며 메소드의 경우 참조타입과 무관하게 인스턴스 변수를 참조합니다. 이런 경우는 부모 클래스의 멤버변수와 같은 이름의 멤버변수를 자손클래스에 정의한 경우에 해당하며 정의하지 중복되지 않을 경우는 문제가 되지 않습니다. 자손 클래스에 중복정의 되었음에도 의도적으로 부모 클래스의 멤버변수를 참조할 경우 Son클래스의 주석처리된 것 처럼 “super” 키워드를 사용하여 참조가 가능합니다.  상속으로 구현된 클래스의 인스턴스 멤버중 참조 타입에 영향을 받지않는 멤버는 인스턴스 메서드밖에 없습니다.

상속을 사용할 경우 이점을 유의해서 사용해야할 것 같습니다.

프로젝트 끝나고 조금 여유 있어서 자바공부 시작했는데 재미있네요 ㅎㅎ 틀린 점이나 궁금한 점 있으시면 댓글 달아주시면 감사하겠습니다!

  • 셋째

    잘봤습니다. 코드가 길어지면 자손클래스에서의 메서드 오버라이딩 여부를 바로 파악하기가 어렵기에 @Override 애노테이션을 사용하는 거 같네요.