개발의 시작과 끝

2020.05.13 / Day - 31 자바 상속과 구성 본문

풀스택/자바 공부, 복습

2020.05.13 / Day - 31 자바 상속과 구성

개발지혜 2020. 5. 13. 13:02

31일차

 

상속을 사용하는 이유

- 공통적인 부분을 가지고 있는 상위 클래스를 활용하여 하위 클래스는 본인 고유의 상태와 행동을 정의하기 위함이다.

- 코드의 확장성, 재사용성이 용이하고 중복된 코드를 상위 클래스로 빼서 코드가 간결해진다.

- 결과적으로 유지보수가 쉬워진다

 

상속 정의

하위 클래스는 상위 클래스의 모든 메소드를 재사용할 수 있고,

재정의를 하여 하위 클래스만의 메소드로 변경 가능하다.

 

상속(Inheritance)과 구성(Compositon)

 상속의 단점

 - 상속은 단일 패키지에서 사용해야만 안전하다.

 - 하위 클래스는 상위 클래스에 많이 의존하게 된다.

 - 상위 클래스의 코드가 수정되면 하위 클래스의 코드도 수정되어야 하는 경우가 많다. (재정의 메소드)

 - 확장이라는 목표를 두고 상속을 사용하면 괜찮으나, 해당 설계가 아닌 상황에서 상속을 사용할 시 문제를 발생할 수       있다.

 - 상속은 캡슐화를 위반한다(하위 클래스가 상위 클래스에 구체적인 구현 내용을 의존하기 있기 때문이다)

 

>구성으로 해결

- 구성(Composition)은 하위 클래스가 상위 클래스를 상속받는 것이 아니라 단순히 하위 클래스가 상위 클래스를             private으로 참조받아서 사용하는 것이다. 

- 그 후 상위 클래스에서 필요한 메소드를 가져다 사용하는것이다.

ex >

정리

- 상속은 상위 클래스와 하위 클래스가 순수한 is-a관계일 때만 사용해야한다.

- is-a 관계라고 해서 무조건 사용하는 것이 아니라, 같은 패키지에 있어야 하며 상위 클래스가 확장을 고려하여

 설계되어 있어야 한다.

- 상속의 취약점을 피하고 싶다면 Composition을 사용하면 된다.