김찬진의 개발 블로그

[23/04/04] extends와 객체 생성의 차이 본문

1일1배움/Spring (김영한 님)

[23/04/04] extends와 객체 생성의 차이

kim chan jin 2023. 4. 4. 11:57

초기 가정 상황은 다음과 같다.

C클래스는 A클래스를 상속했다.

근데 C클래스는 B클래스도 상속하고 싶다. 

하지만 클래스의 다중상속은 불가능하기 때문에 C클래스는 둘 중 하나의 클래스 상속을 포기해야 한다는 한계가 있다.

(클래스 상속의 한계 때문에 발생한 문제이다.)

 

상속의 한계를 벗어나기 위해 참조타입의 객체를 사용할 수 있다.

C클래스는 A클래스도 상속하고 싶고, B클래스도 상속하고 싶다.

C클래스는 A 참조타입의 객체와 B 참조타입의 객체를 생성해서 사용하면 된다.

하지만 만약 C클래스가 A 참조타입의 객체 대신 X 참조타입의 객체를 사용하고 싶다면 

C클래스의 코드를 직접 수정해야 한다는 한계가 있다.

(클래스가 특정 클래스에 종속적이기 때문에 발생한 문제이다.)

 

종속의 한계를 벗어나기 위해 인터페이스를 사용할 수 있다.

A클래스와 B클래스의 공통된 로직을 뽑아서 Y 인터페이스에 넣는다.

그리고 C클래스는 Y 참조타입의 참조변수를 선언하고 생성자는 A 클래스의 생성자로 객체를 생성한다.

(또는 C클래스는 Y 참조타입의 참조 변수를 선언하고 생성자는 B 클래스의 생성자로 객체를 생성한다.)

 

Comments