클래스가 가진 메서드와 필드를 사용하는 것이다. 상속을 받은 클래스(자식 클래스)는 상속을 준 클래스(부모 클래스)의 모든 메서드와 필드를 사용 할 수 있다.
상속 역시 접근 지시자의 영향을 받는다. public이 아닌 경우 자식 클래스에서 참조가 제한 될 수 있다.
계층적 상속 : 하나의 부모 클래스는 여러개의 자식 클래스를 가질 수 있다.
단일 상속 : 자식 클래스는 여러개의 부모 클래스를 가질 수 없다.
다중 레벨 상속 : 부모 클래스를 가진 자식 클래스를 상속 받을 수 있다.
부모 클래스(직계 부모 클래스)를 의미한다. super
키워드를 통해 부모 클래스의 인스턴스 변수, 메서드를 참조 할 수 있다.
this()
와 같이 super()
는 부모 클래스의 생성자를 의미한다. 생략할 경우 컴파일러가 파라미터 없는 기본 생성자를 자동으로 추가한다.
자식 클래스를 인스턴스화 하면 부모 클래스도 인스턴스화 된다.
부모 클래스의 메서드를 재졍의 하는 것을 의미한다.
어떤 메서드를 호출할지를 결정하고 실행하는 과정이다.
컴파일 시점에서 어떤 메서드를 실행할지 알고 있는 경우이다.
런타임 시점에서 실행할 메서드가 결정되는 경우이다.
abstract
키워드가 붙은 클래스이며 하나 이상의 추상 메서드를 포함하고 있다.
인스턴스를 생성하지 못한다.
추상 메서드 : 구현이 되지 않은 메서드
재정의를 원하지 않을 때 사용한다.
클래스에 final
키워드가 있는 경우 : 상속을 하지 못한다.
메서드에 final
키워드가 있는 경우 : 오버라이딩을 하지 못한다.
변수에 final
키워드가 있는 경우 : 값을 변경할 수 없다.
모든 클래스의 최상위에 있는 부모클래스이다. 클래스를 생성하게 되면 자동으로 Object 클래스를 상속받게 된다.