728x90
- 자바는 단일 상속만 허용한다. 인터페이스의 경우에만 다중 상속을 허용한다.
- super 예약어는 상위 클래스의 this다.
- 생성자 method에서는 super()와 this() 중 하나만 사용 가능하고, 만약 어느 것도 없으면 JVM이 자동으로 매개 변수가 없는 super() method가 있다고 인식한다.
- 접근 권한의 크기와 내용
- private < package < protected < public
- private은 자신의 클래스에서만 사용할 수 있다.
- package는 동일한 package + 동일한 파일에서도 사용할 수 있다.
- protected는 상속 관계에서도 사용할 수 있다.
- 오버라이딩과 오버로딩
- 오버라이딩(overriding)은 상속 관계에서 상위 클래스와 하위 클래스에 있는 이름과 매개 변수가 모두 동일한 method를 가리킨다.
- 오버로딩(overloading)은 이름은 동일하나 매개 변수의 개수나 종류가 다른 method를 가리킨다.
- 오버라이딩에는 두 가지 규칙이 있다.
- 하위 클래스의 method의 접근 제한자의 범위가 상위 클래스의 method보다 같거나 더 커야 한다.
- ex) 상위 클래스의 method의 접근 제한자가 package이면 하위 클래스의 method의 접근 제한자는 package, protected, public이 가능하다.
- 하위 클래스의 method에 throws 구문이 있으면 상위 클래스의 method에도 반드시 해당 예외 클래스에 준하는 throws 구문이 있어야 한다.
- 하위 클래스의 method의 접근 제한자의 범위가 상위 클래스의 method보다 같거나 더 커야 한다.
- final 예약어를 클래스 앞에 붙이면 상속을 막고, method 앞에 붙이면 오버라이딩을 막는다.
- 다형성은 여러 개의 개별적인 클래스를 상위 클래스 하나로 통합 관리하는 것을 말한다.
class A {}
class B extends A {}
A b = new B();
- 다형성의 중요한 특징으로는 다형성으로 선언된 객체를 통해서는 상위 클래스의 필드만 접근할 수 있지만, method를 호출하는 경우 하위 클래스에 오버라이딩된 method가 있으면 그 method를 호출한다는 점이다.
- 다형성을 이용해 상위 클래스로 정의한 객체를 다시 하위 클래스 변수에 저장할 경우 명시적으로 캐스팅(Casting)을 해야 한다.
class A {}
class B extends A {}
A ap = new B();
B bp = ap; // 오류 발생
B bp = (B)ap; // 정상적으로 실행
- 하지만 이는 ap가 실제로는 상위 클래스의 객체인 경우 문제가 발생하므로 ap가 실제로 B 클래스의 객체임을 확인하고 캐스팅을 해야 한다. 이를 위해 사용하는 예약어가 바로 instanceof이다.
if (ap instanceof B) {
bp = (B)ap;
}
출처 : 헬로 자바 프로그래밍(2016)
728x90
'자바 기초' 카테고리의 다른 글
제네릭 (0) | 2021.04.18 |
---|---|
자바 멀티 스레드 (0) | 2021.04.17 |
예외 처리와 어설션 (0) | 2021.04.16 |
추상 클래스와 인터페이스 (0) | 2021.04.16 |
중첩 클래스 (0) | 2021.04.16 |