상속
부모 클래스에 만들어진 필드, 메소드를 자식 클래스가 물려받음
동일한 특성을 재정의할 필요가 없어 자식클래스가 간결해짐
상속 선언
• 부모 클래스 : 슈퍼 클래스(super class)
• 자식 클래스 : 서브 클래스(sub class)
• extends 키워드 사용
public class Person {
...
}
public class Student extends Person { // Person을 상속받는 클래스 Student 선언
...
}
public class StudentWorker extends Student { // Student를 상속받는 StudentWorker 선언
...
}
Student 클래스는 자신과 Person 클래스의 protected , public, default, 필드에 접근할 수 있고,
StudentWorker 클래스는 자신과 Person 클래스, Student 클래스의 protected, public, default 필드에 접근할 수 있다.
슈퍼클래스와 서브클래스가 다른 패키지에 존재한다면 protected, public 필드만 접근 가능하다.
최상위 클래스
부모 클래스는 동시에 여러개의 자식 클래스에 상속 시킬 수 있고,
자식클래스는 한번에 한개의 부모 클래스만 상속 받을 수 있다.
상속의 최상의 조상 클래스는 java.lang.Object 클래스이다.
자바 컴파일러에 의해 모든 클래스는 java.lang.Object를 상속 받는다.
11개의 메소드가 존재하고 모든 클래스에서 활용할 수 있다. ex) equals(), clone()
서브 클래스/슈퍼 클래스의 생성자 호출 및 실행
서브 클래스의 생성자는 실행되기 전에 늘 슈퍼 클래스의 생성자를 먼저 실행한다.
호출 순서
- 서브 클래스 생성자 -> 슈퍼 클래스 생성자
실행 순서
- 슈퍼 클래스 생성자 -> 서브 클래스 생성자
부모 클래스에 생성자가 여러개 존재한다면, 자식 클래스의 생성자에서 super() 메소드로 부모 클래스의 생성자 중 어떤 생성자를 실행시킬 것인지 선택해야 한다. 명시하지 않는 경우 기본 생성자를 선택한다.
this() - 자기 자신의 다른 생성자
super() - 부모 클래스의 생성자
super()에 들어가는 인자를 바꿔서 생성자를 선택할 수 있다.
만약 자식 클래스로 객체를 생성할 때 인자를 주고, 그 인자에 맞는 부모 클래스의 생성자를 호출하려면 자식 클래스의 생성자에서도 super()에 똑같은 인자를 넘겨주어야 한다. 아니면 부모 클래스에서 기본 생성자를 호출한다.
super()에 인자를 넣어주어야 같은 타입의 부모 생성자를 호출할 수 있다.
만약 B(int x) 생성자가 없다면 컴파일 오류
'CS > JAVA' 카테고리의 다른 글
자바 - 오버로딩, 오버라이딩 (0) | 2022.04.20 |
---|---|
자바 - 업캐스팅 & 다운캐스팅 (0) | 2022.04.13 |
자바 - static & final (0) | 2022.04.10 |
자바 - 접근 지정자 (0) | 2022.04.07 |
자바 - this와 생성자 오버로딩 (0) | 2022.04.06 |