
상속이란?
부모가 자식들에게 자신의 것을 사용하라고 허락해주는 것
(앞서 VO 클래스를 바구니라고 표현 했었는데 그 바구니를 자식이 각각 만드는 것이 아닌 부모에게 바구니가 있다면 자식이 부모의 바구니를 사용할 수 있게 해주는 것이다.)
수평적 구조 설계
객체를 설계하다 보면 비슷한 클래스의 경우 중복적인 요소가 발생한다.
단점
① 코드의 중복이 발생
② 새로운 요구사항 발생시 반영이 어렵다(유지보수가 어렵다.)
③ 확장성이 떨어진다.(비용 및 시간이 많이 든다)
수직적 구조 설계
수직적 구조는 계층화=상속 이라고 할 수 있다
상속을 사용하면 하위클래스가 상위클래스를 재활용 가능하다.
즉, 하위클래스가 상위클래스를 접근하여 사용 가능
장점
① 코드의 중복을 최소화
② 새로운 요구사항 발생시 반영이 쉽다(유지보수가 어렵다.)
③ 확장성이 좋아진다.
super( )
:상위클래스의 생성자를 호출
그렇다면 부모 클래스를 작성할때 원래는 접근 제어(정보은닉)를 위하여 private로 변수를 선언해 줬는데 여기서도 private로 선언해 줘야하는건가?
-> 아니다! private 로 멤버를 선언하게 되면 상속의 의미가 사라지는것. (과연?)
그래서 우리는 protected: 상속관계에서 하위 클래스가 상위 클래스의 접근을 허용하는 접근권한 을 사용한다
protected는 같은 패키지 안에서 접근 가능
==> 근데 자식이 부모의 상태정보를 마음대로 접근하는건 정보은닉에 위배되는거 아닌가?
=> 다음 글에서 살펴보기
예시)
부모 클래스

상속 받은 클래스

출력해보기

'Backend > JAVA' 카테고리의 다른 글
[패캠/JAVA] 상속 관계 객체 생성 및 초기화(동작 정보, 메서드) (0) | 2023.08.22 |
---|---|
[패캠/JAVA] 상속 관계 객체 생성 및 초기화(상태정보) (0) | 2023.08.08 |
[패캠/JAVA] JVM 메모리 모델 (0) | 2023.08.01 |
[패캠/JAVA] Static 이해하기 (0) | 2023.08.01 |
[패캠/JAVA] VO(DTO)클래스 잘 설계하기 (0) | 2023.08.01 |