김찬진의 개발 블로그
[23/04/04] extends와 객체 생성의 차이 본문
초기 가정 상황은 다음과 같다.
C클래스는 A클래스를 상속했다.
근데 C클래스는 B클래스도 상속하고 싶다.
하지만 클래스의 다중상속은 불가능하기 때문에 C클래스는 둘 중 하나의 클래스 상속을 포기해야 한다는 한계가 있다.
(클래스 상속의 한계 때문에 발생한 문제이다.)
상속의 한계를 벗어나기 위해 참조타입의 객체를 사용할 수 있다.
C클래스는 A클래스도 상속하고 싶고, B클래스도 상속하고 싶다.
C클래스는 A 참조타입의 객체와 B 참조타입의 객체를 생성해서 사용하면 된다.
하지만 만약 C클래스가 A 참조타입의 객체 대신 X 참조타입의 객체를 사용하고 싶다면
C클래스의 코드를 직접 수정해야 한다는 한계가 있다.
(클래스가 특정 클래스에 종속적이기 때문에 발생한 문제이다.)
종속의 한계를 벗어나기 위해 인터페이스를 사용할 수 있다.
A클래스와 B클래스의 공통된 로직을 뽑아서 Y 인터페이스에 넣는다.
그리고 C클래스는 Y 참조타입의 참조변수를 선언하고 생성자는 A 클래스의 생성자로 객체를 생성한다.
(또는 C클래스는 Y 참조타입의 참조 변수를 선언하고 생성자는 B 클래스의 생성자로 객체를 생성한다.)
'1일1배움 > Spring (김영한 님)' 카테고리의 다른 글
[23/04/05] 왜 스프링은 싱글톤으로 빈을 만드는 것일까? (0) | 2023.04.05 |
---|---|
[23/04/05] 의존관계주입, 의존관계검색 (0) | 2023.04.05 |
[23/04/04] 만약 이미 UserDao가 다른 목적을 위해 상속을 사용하고 있다면 어쩔 것인가? (0) | 2023.04.04 |
[23/03/31] 클래스 다이어그램 (0) | 2023.03.31 |
23/02/14 [Spring 동작 순서] (0) | 2023.02.14 |
Comments