오식랜드
[java] 상속 본문
반응형
상속
: 특정 클래스가 가지는 일부 속성/행위를 다른 클래스에게 제공하기 위해 맺는 관계
- 기존 클래스의 멤버를 그대로 이용 가능
- 새로운 멤버 추가 가능
- 기존 클래스의 멤버를 수정하여 사용하기 가능
⇒ 코드의 재사용 용이 (오류 최소화 / 유지보수 용이 / 개발 시간 단축)
예시
대학생 집단 + 고등학생 집당
⇒ “학생” 이라는 공통점
⇒ “학생” 클래스(공통적인 내용을 담는 클래스) 생성 후 대학생/고등학생에 상속
⇒ 대학생 / 고등학생 각각에 필요한 정보를 담는 멤버변수는 각자 선언 (대학생 → 전공 등 / 고등학생 → 학년, 반 등)
IS-A / HAS-A 관계
- IS-A : 상속
- ~ 중 하나
- “대학생”은 “학생” 중 하나
- HAS-A : 포함
- ~ 을 갖는
- 클래스 간 연관성이 낮아 상속으로 표현하지 않음
- “학생 명부”는 “학생 정보”를 갖는다
상속의 특징
- 모든 java의 class는 Object 클래스로부터 파생 ⇒ 모든 class의 조상 : Object 클래스
- 단일 상속만 허용
- 다중 상속은 interface 사용
- 하위 클래스의 생성자 첫 줄에서 상위 클래스의 생성자 호출이 필요
Super 클래스
- parent 클래스, base 클래스라고도 불린다.
- 자신의 멤버를 상속해주는 클래스
Sub 클래스
- child 클래스, derived 클래스라고도 불린다.
- super 클래스로부터 멤버들을 상속받음
- 상속받은 멤버는 자유롭게 사용 가는 (private 멤버는 직접 접근 불가 ⇒ super 클래스에서 access 메서드 제공 필요)
- 메서드 오버라이딩(Overriding) 가능 : 상속받은 멤버 재정의 가능 ⇒ 재정의시 원래의 멤버는 은폐됨 (삭제가 아님)
- 은폐된 내용은 super. 를 통해 불러올 수 있음
Sub클래스에서 정의
class ImSub extends SuperClassName {
// super 클래스 생성자 선언
// sub 클래스에서 추가될 멤버 선언
}
반응형
'dev-log > java' 카테고리의 다른 글
[java] 다형성 (Polymorphism) (0) | 2023.10.22 |
---|---|
[java] 배열 (0) | 2023.10.16 |
[java] 난수 생성 (0) | 2023.10.16 |
[java] 패키지(Package)와 모듈(Module) (0) | 2023.10.16 |
[java] 생성자 (0) | 2023.10.16 |
Comments