- 자바 상속의 특징
- 다중상속을 지원하지 않는다. 따라서 extends 뒤에는 단 하나의 부모 클래스만 올 수 있다.
- 상속의 횟수에 제한을 두지 않는다.
- 자바에서 계층 구조의 최상위에 있는 클래스는 java.lang.Object클래스이다. 따라서 Object클래스는
super class를 가지지 않고
자바의 다른 모든 클래스들은 Object클래스의 자손이다.
- 상속이란?
기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것.
상속은 캡슐화, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나이다. - super 키워드
- super 키워드는 부모 클래스로 부터 상속받은 필드나 메소드를 자식클래스에서 참조하는 데 사용하는 참조 변수이다.
- 인스턴스 변수의 이름과 지역 변수의 이름이 같을 경우 인스턴스 변수 앞에 this키워드를 사용하여 구분한다.
- 부모 클래스의 멤버와 자식 클래스의 멤버 이름이 같을 경우 super 키워드를 사용하여 구별할 수 있다.
- 자바에서는 super 참조 변수를 사용하여 부모 클래스의 멤버에 접근할 수 있다.
- this와 마찬가지로 super참조 변수를 사용할 수 있는 대상도 인스턴스 메소드뿐이다. 클래스 메소드에서는 사용불가
- 메소드 오버라이딩
- 오버라이딩이란?
상속관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것.
따라서 부모클래스에 선언된 메소드와 같은 이름, 같은 리턴 타입, 같은 매개 변수 리스트를 갖는 메소드를 서브 클래스로
재작성 하는 것이다. - 다이나믹 메소드 디스패치 (Dynamic Method Dispatch)런타임이 호출해야하는 특정 메소드를 런타임에 결정하는 것?
- 다이나믹 메소드 디스패치는 오버라이딩 된 메소드에 대한 호출이 컴파일 타임이 아닌 런타임에 해석되는 프로세스이다.
- 추상 클래스자바에서 추상 클래스는 하나 이상의 추상 메소드를 포함하는 클래스를 가리킨다.
이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가지는 메소드의 집합을 정의할 수 있도록 해준다.
따라서 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언하면, 이 클래스를 상속받는 모든 클래스에서는
이 추상 메소드를 반드시 오버라이딩해야 한다. - 추상 메소드란?
자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미한다. - final 키워드
- 클래스에 final이 붙었다면 상속을 허락하지 않겠다는 의미이다.
- Object 클래스
- 모든 자바 클래스의 최상위 클래스, 조상이 되는 클래스이다.
따라서 자바의 모든 클래스는 Object클래스의 모든 메소드를 바로 사용할 수 있다.
잡단한것들/자바스터디