- 상속을 이용하면 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져오기 때문에 유지 보수 시간을 최소화 가능
클래스 상속
- 프로그램에서는 자식이 부모를 선택
class 자식 클래스 extends 부모클래스 {
//필드
//생성자
//메소드
}
- 단 하나의 부모 클래스만 상속 가능
- 부모 클래스에서 private 접근 제한 필드와 메소드는 상속 대상 x
- 다른 패키지라면 default 접근 제한 필드와 메소드는 상속 대상 x
부모 생성자 호출
- 모든 객체는 클래스의 생성자를 호출해야만 생성
- 부모 생성자는 자식 생ㅎ성자의 맨 첫출에서 호출됨
- super()는 부모의 기본 생성자를 호출함 ->컴파일러가 자동 생성
메소드 재정의 (오버라이딩 overriding)
- 부모의 메소드와 동일한 시그니처 (리턴타입, 메소드 이름, 매개 변수 목록)을 가저야 함
- 접근 제한을 더 강하게 재정의할 수 없음
- 새로운 예외를 throws할 수 없음
- @Override 어노테이션을 붙여주면 컴파일러가 확인도 해줌 -> 안붙여도 상관 x but 추천
부모 메소드 호출
- super.부모메소드()
- 자식 클래스 내부에서 재정의된 부모 클래스의 메소드를 호출할 때 사용
final 클래스와 final 메소드
- 상속할 수 없는 final 클래스
- final 클래스는 부모 클래스가 될 수 없음
- 재정의할 수 없는 final 메소드
- final 메소드는 자식 클래스에서 재정의 할 수 없음
확인문제
- 자바는 다중 상속을 허용한다. (x)
- 부모의 메소드를 자식 클래스의 재정의(오버라이딩)할 수 있다. (o)
- 부모의 private 접근 제한을 갖는 필드와 메소드는 상속의 대상이 아니다 (o)
- protected 멤버는 같은 패키지의 모든 클래스와 다른 패키지의 자식클래스만 접근할 수 있다 (o)
- 부모의 메소드는 숨김 효과가 나타난다 (o)
- 재정의 시 접근 제한을 더 강하게 할 수 있다 (x)
- @Override를 붙이면 컴파일러가 재정의를 확인한다 (o)
- 부모 메소드를 호출하고 싶다면 super 키워드를 사용할 수 있다 (o)
final 클래스, final 필드, final 메소드에 관한 설명 o,x
- 모두 상속과 관련이 있다 (x) -> 필드는 상속과 관련이 없음
- final 메소드를 가진 클래스는 부모 클래스가 될 수 없다 (x) -> 재정의 할 수 없다
- final 메소드는 재정의 할 수 없다 (o)
- final 클래스는 final 필드가 반드시 있어야 한다 (x)
'Java > 혼자 공부하는 자바' 카테고리의 다른 글
혼자공부하는자바 7-3 추상 클래스 (0) | 2022.12.03 |
---|---|
혼자공부하는자바 7-2 타입 변환과 다형성 (0) | 2022.11.30 |
혼자공부하는자바 6-6 패키지와 접근 제한자 (0) | 2022.11.28 |
혼자공부하는자바 6-5 인스턴스 멤버와 정적 멤버 (0) | 2022.11.28 |
혼자공부하는자바 ch 6-4 메소드 (0) | 2022.11.25 |