상속은 연관 있는 클래스들에 대해 공통적인 구성요소를 정의하고 이를 대표하는 클래스를 정의하는 것을 의미한다.
상속 관계는 "is a" 관계를 의미하며 extends 키워드를 이용해 상속 관계를 정의한다.
상속 관계에서 상속을 받는 클래스를 sub class, derived class, extended class , child class
상속 관계에서 상속을 제공하는 클래스를 super class, base class, parent class
자식 클래스는 부모클래스에 없는 필드와 메소드를 정의하여 기능을 추가 할 수 있다.
자식 클래스는 부모클래스를 상속 받아서 부모클래스의 모든 자원(속성,메소드 사용할 수 있음)
또한 상위 클래스에 정의된 메소드를 재정의하여 다르게 동작시킬 수 있음
상속 대상이 되는 부모 클래스에 protected 접근 지정자로 정의된 구성요소는 자식 클래스 구성요소가 된다.
자식 클래스는 부모 클래스의 protected, public 구성요소에 대해 this 접근이 가능하다.
즉, 상속 관계에서 자식 클래스는 부모 클래스에서 제공하는 구성요소들을 자신의 구성요소로 포함한다.
부모 클래스의 private 구성요소는 자식 클래스에서 직접 접근할 수 있다.
상속 관계에서 자식 클래스를 인스턴스화 하면 부모 클래스의 객체도 인스턴스화가 진행된다.
자식 클래스의 객체가 인스턴스화 되기 위해서는 먼저 부모 클래스의 객체가 인스턴스화 되어야 한다.
상속 구조에서 가장 상위의 부모 클래스부터 차례로 인스턴스화가 진행된다.
Super() 생성자는 자식 클래스에서 명시적으로 부모클래스의 생성자를 호출 할 수 있도록 하는 방법이다.
상속 관계에서 부모 클래스의 생성자 호출을 외부에서 명시적으로 지정할 수 없다.
자바는 자식 클래스의 객체가 인스턴스화 될 때 기본적으로 부모 클래스의 디폴트 생성자를 호출한다.
부모 클래스에 디폴트 생성자가 정의되어 있지 않으며 자식 클래스는 명시적으로 부모 클래스의 생성자를 호출해야한다.