http://www.yes24.com/Product/Goods/103389317
Do it! 자바 완전 정복 책을 공부하며 요약・정리한 내용입니다.
상속
부모 클래스의 필드, 이너클래스, 메서드를 자식 클래스 내부에 포함시킴
부모클래스 ← 자식클래스
class 자식클래스 extends 부모클래스 {
...
}
부모 클래스는 자식 클래스의 공통적 특징을 모아 구성한 클래스 이다.
자식클래스는 부모 클래스의 모든 멤버(필드, 이너클래스, 메서드)를 내려받고 자식클래스에서 추가 필드와 메서드를 구성하면 된다.
부모 클래스에서 자식클래스로 갈수록 더 많은 특징과 기능이 구체화 되므로 범위가 좁아진다.
클래스는 다중 상속(부모 클래스가 2개 이상)이 불가능하다.
참고로 UML로 상속을 표시할때는 화살표가 부모 클래스 쪽으로 향함
e.g. 부모클래스 ← 자식클래스
상속의 장점
- 코드의 중복성 제거
- 다형적 표현 가능
- 1개의 객체를 여러 가지 모양으로 표현할 수 있다.
Animal a1 = new Dog();
Animal a2 = new Dragon();
Animal a3 = new Bear();
다중 상속을 허용하지 않는 이유
만일 다중 상속을 허용하면 모호성(ambiguous)이 발생한다.
e.g.
class A에 data는 3이고
class B의 data가 4일때
만약 class C extends A, B 이렇다면 C의 data의 값에는 모호성이 발생한다.
자식클래스가 많은 것은 다중 상속이 아니다.
생성자의 상속 여부
생성자는 자식 클래스로 상속되지 않는다.
e.g.
class A {
A() {}
}
class B extends A {
A() {} // X
}
클래스 내부에는 필드, 메서드, 생성자, 이너 클래스만 올 수 있다.
그래서 예시의 B클래스의 A(){} 는 B클래스와 이름이 달라 생성자도 아니고 리턴타입도 없어 메서드도 아니다.
즉 오류가 발생한다.
'Java > Java' 카테고리의 다른 글
자바 객체 배열 복사 (0) | 2022.07.29 |
---|---|
Java의 SCE(Short-Circuit Evaluation, 단락 회로 평가) (0) | 2022.07.16 |
static 제어자 (Java) (0) | 2022.04.25 |
클래스 접근 지정자와 생성자 접근 지정자(java) (0) | 2022.04.20 |
가변 길이 배열 입력매개변수 메서드 (Java) (0) | 2022.04.11 |