자바 상속 시 메모리 구조

JWJ·2025년 9월 27일

Java Basic

목록 보기
6/8

개요

자바에서 제공하는 상속의 기능은 공통부분을 부모에서 제공함으로써 유지보수의 용이함에 도움을 준다. 이러한 상속을 이해하기 위해서 힙 영역에서 인스턴스가 어떻게 생성되는지 이해할 필요가 있다.

상속 시 메모리 구조

  • 그림과 같이 Car 라는 부모 객체를 2개의 자식이 상속받고 있다. 이 덕분에 전기차와 가스차에서 모두 move 의 기능을 공통적으로 활용할 수 있게 된다.

  • 이때 ElecticCar를 생성할 때 메모리 구조는 어떻게 될까?

public class Car{
	public void move(){
    	print("차가 움직입니다.")
    }
}

public class EletricCar extends Car{
	public void charge(){
    	print("충전합니다.")
    }
}

EletricCar electricCar = new EletricCar();

  • 정답은 부모의 인스턴스와 자식의 인스턴스가 동시에 생성이 된다.

  • 이러한 이유로 부모 클래스를 상속받을 때, 자식 클래스의 생성자에서 부모 클래스의 생성자인 super 를 꼭 기입해줘야 한다. (없으면 부모의 기본 생성자를 JVM이 자동으로 실행해줘서 오류가 발생하지 않은 것이다)

자식 클래스에서 부모 메서드 호출하기

  • electricCar.move 호출 시

  • 본인 타입 (전기차) 를 기준으로 move 를 찾고, 만약에 없다면 부모 클래스에서 찾는다. 부모 클래스에도 없다면 상위 부모 클래스로 접근하여 계속 move 클래스를 찾는다.

profile
인사이트를 얻고 정리하는 공간입니다

0개의 댓글