상속(Inheritance)
객체 지향 프로그래밍의 중요한 특징 중 하나가 상속이다.
상속: 무엇인가를 물려 받는다는 의미
클래스의 상속
클래스를 정의할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능이 확장되는 클래스를 구현하는 것.
상속 하는 클래스 : 상위 클래스, parent class, base class, super class
상속 받는 클래스 : 하위 클래스, child class, derivd class, sub class
클래스 상속 문법
class B extends A{
}
[주의] - extends라고 해서 다중 상속이 가능하지는 않고, 단 하나의 class만 사용할 수 있다. 부모클래스의 자식클래스, 그 자식 클래스가 부모 클래스가 되고 또 자식클래스가 생기는 것을 제외하고 부모클래스가 두 개이거나 하는 것은 허락하지 않는다. (자바는 single inheritance만을 지원한다.)
클래스 상속 문법 예)
class Mammal{
}
class Human extends Mammal{
}
상위클래스 - 포유류 클래스 <--------- 하위클래스 - 사람 클래스
포유류는 사람보다 일반적인 개념
사람은 포유류의 특징과 기능을 기보으로 더 많거나 다른 특징과 기능을 가지고 있다.
상속관계에서는 상위 클래스가 하위 클래스보다 일반적인 개념이고, 하위 클래스는 상위 클래스보다 구체적인 클래스가 된다.
정리)
1. 하위 클래스가 생성될 때 상위 클래스가 먼저 생성된다.
2. 상위 클래스의 생성자가 호출되고 하위 클래스의 생성자가 호출된다.
3. 하위 클래스의 생성자에서는 무조건 상위 클래스의 생성자가 호출되어야 한다.
4. 아무것도 없는 경우 컴파일러는 상위 클래스 기본 생성자를 호출하기 위한 super()를 코드에 넣는다.
5. super() 호출되는 생성자는 상위 클래스의 기본생성자이다.
6. 만약 상위 클래스의 기본 생성자가 없는 경우(매개변수가 있는 생성자만 존재하는 경우) 하위 클래스는 명시적으로 상위 클래스를 호출해야한다.
'Language > JAVA' 카테고리의 다른 글
[JAVA]부모를 부르는 SUPER 예약어 (0) | 2020.06.22 |
---|---|
[JAVA]상위클래스 변수를 사용하기 위한 protected 예약어 (0) | 2020.06.22 |
[JAVA]클래스 메서드 (0) | 2020.06.18 |
[JAVA]static 변수 (0) | 2020.06.18 |
[JAVA]생성자에서 다른 생성자를 호출하는 this (0) | 2020.06.17 |
댓글