상속은 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.
상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아 새로운 클래스를 생성할 수 있다.
기존에 정의되어 있던 클래스를 부모 클래스 또는 상위 클래스, 기초 클래스 라고 한다.
그리고 상속을 통해 새롭게 작성 되는 클래스는 자식 클래스 또는 하위 클래스, 파생 클래스 라고 한다.
자식 클래스는 부모 클래스의 모든 특성을 물려받아 새롭게 작성된 클래스이다.
class 자식클래스이름 extend 부모클래스이름 {
}
자식 클래스에는 무모 클래스의 필드와 메소드만이 상속되며 생성자와 초기화 블록은 상속되지 않는다.
부모 클래스의 접근 제어가 private이나 default로 설정된 멤버는 자식 클래스에서 상속 받지만 접근은 불가능하다.
class Parent {
private int a = 10;
public int b = 20;
}
class Child extends Parent {
private int c = 30;
void print() {
//System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}
}
public class InheritanceStudy {
public static void main(String[] args) {
Child child = new Child();
child.print();
}
}
결과
Object 클래스는 모든 클래스의 부모 클래스가 되는 클래스 이다.
자바의 모든 클래스는 별도로 extends 키워드를 사용하여 Object 클래스의 상속을 명시하지 않아도 Object 클래스의 모든 멤버를 자유롭게 사용할수 있다.