본문 바로가기

Backend/JAVA

[패캠/JAVA] 자바 상속

728x90

 

상속이란?

부모가 자식들에게 자신의 것을 사용하라고 허락해주는 것

(앞서 VO 클래스를 바구니라고 표현 했었는데 그 바구니를 자식이 각각 만드는 것이 아닌 부모에게 바구니가 있다면 자식이 부모의 바구니를 사용할 수 있게 해주는 것이다.)

 

수평적 구조 설계

객체를 설계하다 보면 비슷한 클래스의 경우 중복적인 요소가 발생한다.

단점

① 코드의 중복이 발생

② 새로운 요구사항 발생시 반영이 어렵다(유지보수가 어렵다.)

③ 확장성이 떨어진다.(비용 및 시간이 많이 든다)

 

수직적 구조 설계

수직적 구조는 계층화=상속 이라고 할 수 있다

상속을 사용하면 하위클래스가 상위클래스를 재활용 가능하다.

즉, 하위클래스가 상위클래스를 접근하여 사용 가능

장점

① 코드의 중복을 최소화

② 새로운 요구사항 발생시 반영이 쉽다(유지보수가 어렵다.)

③ 확장성이 좋아진다.

 

super( )

:상위클래스의 생성자를 호출

 

그렇다면 부모 클래스를 작성할때 원래는 접근 제어(정보은닉)를 위하여 private로 변수를 선언해 줬는데 여기서도 private로 선언해 줘야하는건가?

-> 아니다! private 로 멤버를 선언하게 되면 상속의 의미가 사라지는것. (과연?)

그래서 우리는 protected: 상속관계에서 하위 클래스가 상위 클래스의 접근을 허용하는 접근권한 을 사용한다

protected는 같은 패키지 안에서 접근 가능

==> 근데 자식이 부모의 상태정보를 마음대로 접근하는건 정보은닉에 위배되는거 아닌가?

=> 다음 글에서 살펴보기

 

예시)

부모 클래스

상속 받은 클래스

 

출력해보기

728x90