반응형
상속이란?
- 부모 클래스의 필드와 메서드를 자식 클래스에게 물려주는 것
- 필드와 메서드를 재사용해 코드의 중복 줄여줌
- 부모 클래스만 수정하면 상속받는 자식 클래스도 영향받기 때문에 수정 횟수도 최소화됨
- 부모 클래스에서 private로 필드나 메서드를 선언하면 상속이 불가능함
- 부모 클래스와 자식 클래스가 다른 패키지에 존재하면 기본 접근 제한으로 선언된 필드와 메서드는 상속 대상에서 제외됨
- 자식 객체 생성 시 부모 객체가 먼저 생성된다.
- 부모 생성자는 자식 생성자의 제일 첫 줄에서 호출된다.(아래의 super())
class BJ {
String name;
BJ(String name) {
this.name = name;
}
}
class Temp extends BJ {
int num;
Temp(String name, int num) {
super(name);
this.num = num;
}
}
- 부모 클래스에 기본 생성자가 없으면 자식 클래스의 생성자에서 super()로 부모 생성자를 호출해야 함!
메서드 재정의(@Override)
부모 클래스의 메서드를 재정의해야 하는 경우 자식 클래스에서 변경해야 한다.
-> 이때, 메서드 오버라이딩을 사용함!
- 부모의 메서드와 동일한 매개변수, 리턴 타입, 메서드명으로 선언해야 한다.
- 새로운 예외를 추가할 수 없음
- 부모 클래스의 메서드를 오버라이딩하면, 부모 클래스의 메서드는 제쳐두고 오버라이딩된 자식 메서드를 사용한다.
- 재정의된 메서드는 super()를 사용해 아래처럼 사용 가능하다.
super.fuction();
final 클래스와 메서드
- final을 붙이면 마지막 상태이기 때문에 수정이 불가능
- 부모 클래스가 될 수 없어 자식 클래스를 만들 수 없음
- final 메서드는 최종 상태이기 때문에 오버라이딩으로 수정이 불가능
자동 형변환
- 제일 최상위 클래스는 자신을 상속받는 클래스로 선언이 가능함
-> 하위 객체는 상위 객체로 자동 형변환 된다!
ex) A <- B
A a1 = new B();
- 부모 타입으로 자동 형변환되면 부모 클래스의 필드와 메서드만 접근 가능함
출처
반응형
'Java' 카테고리의 다른 글
[Java] Solid란? (0) | 2021.07.28 |
---|---|
[Java] 다형성, 캐스팅, 추상 클래스, 추상 메서드 (0) | 2021.06.22 |
[Java] 객체지향 프로그래밍(OOP)이란? (0) | 2021.06.22 |
[Java] Java의 메모리 구조, NullPointerException, String (0) | 2021.06.21 |
[Java] 기본 타입과 참조 타입 (0) | 2021.06.21 |