목차
- 상속 (클래스간의 관계)
- Overriding (메소드 재정의)
- final 클래스와 final 메소드
- instanceof 연산자
- 참조변수와 인스턴스의 연결
1. 상속 (클래스간의 관계)
: 기존의 클래스를 재사용해서 새로운 클래스를 작성부모클래스(객체)의 멤버들을 자식클래스(객체)가 물려받는것
class Parent {}
class Child extends Parent {}
-
상속을 사용하는 이유 - 기존에 만들어놓은 클래스의 재사용, 확장을 위해 사용.
-
자바에서는 단일상속만이 가능
-
부모클래스(super)와 자식클래스(sub)가 존재
-
Object 클래스 - 모든 클래스의 최상위
: 모든 클래스는 Object 클래스에 정의된 11개의 메소드를 상속. toString(), equals(Object obj), hashCode() ...
-
private 객체변수는 상속 안됨
-
super: 상위 클래스의 멤버나 메소드에 접근하기 위함.
2. Override (메소드 재정의)
자식 클래스에서 동일한 매소드를 재정의.
부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출
- 접근 제한을 더 강하게 오버라이딩 할 수 없음
- 새로운 예외를 throws할 수 없음
3. final 클래스와 final 메소드
해당 선언이 최종 상태이고, 결코 수정될 수 없음. final 키워드 지정시 상속과 관련됨.
- final class: 상속할 수 없는 클래스(ex. String)
- final method: Overriding 할 수 없는 메소드
- final field: 초기값 설정 후, 더 이상 값을 변경할 수 없는 필드
4. instanceof 연산자
참조변수가 참조하는 인스턴스의 실제 타입을 체크하는데 사용.
if ( c instanceof Car) { ... }
5. 참조변수와 인스턴스의 연결
- 멤버변수가 중복정의된 경우, 참조변수의 타입에 따라 연결되는 멤버변수가 달라진다. (참조변수타입에 영향받음)
- 메서드가 중복정의된 경우, 참조변수의 타입에 관계없이 항상 실제 인스턴스의 타입에 정의된 메서드가 호출된다.
(참조변수타입에 영향받지 않음) -> Overriding
'Java' 카테고리의 다른 글
[Java] Collection framework (0) | 2019.08.29 |
---|---|
[Java] 추상 클래스(abstract class)와 인터페이스(interface) (0) | 2019.08.29 |
[Java] 클래스: 구성 멤버 / final / 접근제한자(access modifier) (0) | 2019.08.27 |
[Java] Data Type - 기본타입 / 참조타입 (0) | 2019.08.27 |
[Java] JDK, JVM 용어 정리 및 프로그램 실행 단계 (0) | 2019.08.27 |