상속 : 부모에서 구현된 멤버가 자식 클래스를 통해 노출 되는 것으로 IS-A관계 (코드중복을제거를 위한 최후의 보루)

-장점 : 암시적 코드 재사용 및 동적 디스패치를 허용하는 강력한 도구. 

         상위 클래스에서 필드 및 메서드를 상속하여 사용할 수 있다.

         하위 클래스에서 소스코드의 양을 줄이고 기능확장에 용이하다.

         (상속을 통한 기능의 정의/ 수정/ 확장)

-단점 : 상속구조가 복잡해지면 상위 클래스의 변화가 하위클래스에 주는 영향을 예측하기 힘들다.

        타임에 수퍼 클래스에서 상속 된 구현을 변경할 수 없다.

        상속은 부모 클래스 구현의 세부 사항에 서브 클래스를 노출하므로 상속이 캡슐화를 깨뜨리는 경우가 종종 있다

        (캡슐화 중단)

        부모구현의 변경은 서브 클래스가 변경되도록 한다.(하위클르새는 상위클래스에 많이 의존하게 된다)

        서브클래싱에 의한 과도한 재사용은 상속 스택을 매우 깊고 혼란스럽게 만들 수 있다.

        상속을 SQL모델에 매핑하는 것은 어렵다.

        상속을 잘못 쓰면 소프트웨어는 불안정해진다.(상속은 단일 패키지 안에서만 사용해야 안전)

 

 

 

 

 

 

구성 : 특정 기능의 개체를 가지는 것으로 HAS-A관계

        클래스의 특정 기능을 수행하기 위해 다른 "객체 패밀리"의 유사하거나 같은 역할을 하는 메소드를 사용하기 위해

        #클래스들끼리 대등한 관계로 결합된 구조, 이다. 이렇게 객체를 구성하면, 기존 코드를 고치는 대신 새로운 객체          그룹군을 만들거나 이미 만들어진 객체 그룹군의 자식 클래스를 변경하여 기능의 추가, 수정을 자유로이 제어함.

-장점 : 기존 코드를 건들었을 때 발생하는 버그가 연쇄 작용하는 것을 막을 수 있다.

         기존 코드의 수정이 아닌 확장으로, 기존 프로그램 구성을 안전하게 지키면서 어플리케이션을 개선할 수 있다.

-단점 : 상속에 하위 클래스는 IS-A관계로 인해 기본 클래스 메서드를 구현하지 않더라도 기본 클래스 메서드를 직접 호

          할 수 있다. 컴포지션을 사용하는 경우 컨테이너 클래스에 메소드를 추가하여 포함된 클래스API를 노출해야 한

          다.

 

 

 

 

 

 

 

#상속은 한번 정한 정책은 수정하기 힘들고 위에서 명령한 것은 억지로 따라야 하는 경직된 관료조직

#구성은 급변하는 시장 환경에 빠르게 적응하고 직원 개인의 특성을 잘 살려주는 바람직한 기업의 현장과 같은 조직

 

출처

https://to2.kr/bjv

https://to2.kr/bju

https://tedock.tistory.com/356

'JAVA' 카테고리의 다른 글

6. 스태틱(static)  (0) 2020.05.05
5. 생성자(Constructor)  (0) 2020.04.28
프로그램의 실행 시간&메모리 사용량  (0) 2020.04.26
0.자바에 대하여  (0) 2020.04.24
3.JVM(Java Virtual Machine)  (0) 2020.04.23

+ Recent posts