7.1 상속 개념
(+) 중복되는 코드를 줄여 개발 시간 단축
(+) 클래스의 수정을 최소화 : 부모 클래스 수정 시 모든 자식 클래스에 수정 효과 적용됨
7.2 클래스 상속
- 자식 클래스 선언 시 어떤 부모로부터 상속받을 것인지를 결정; 부모 클래스를 extends 뒤에 기술
public class 자식클래스 extends 부모클래스 {
}
- 자바는 다중 상속을 허용하지 않음; 여러 개의 부모 클래스 상속 불가능 == extends 뒤에는 단 하나의 부모 클래스만이 옴
7.3 부모 생성자 호출
- 자식 객체 생성 시 부모 객체가 먼저 생성된 후 자식 객체가 생성됨
- 부모 생성자는 자식 생성자의 맨 첫 줄에 숨겨져 있는 super()에 의해 호출됨; 컴파일 과정에서 자동 추가됨, 생략가능!
- 부모 클래스에 기본 생성자가 없고 매개변수를 갖는 생성자만 있다면 -> super(매개값, ...) 코드를 직접 넣어야 함
7.4 메소드 재정의
(1) 메소드 오버라이딩
: 상속된 메소드를 자식 클래스에서 재정의하는 것
- 메소드 오버라이딩 시, 자식 메소드가 부모 메소드보다 우선적으로 사용됨!
*주의해야할 것들
- 부모 메소드의 선언부(리턴 타입, 메소드 이름, 매개변수)와 동일해야 함
- 접근 제한을 더 강하게 오버라이딩할 수 없음 (예: public -> private으로 변경 불가)
- 새로운 예외를 throws 할 수 없음
(2) 부모 메소드 호출
- 메소드 재정의 시, 자식 메소드가 부모 메소드의 내용을 가지고 별도의 내용을 추가하는 경우, super 키워드와 도트 연산자로 자식 메소드 내에서 부모 매소드 호출 가능
class Parent {
public void method(){
//작업 처리 1
}
}
class Child extends Parent{
@Override
public void method(){
super.method(); //부모 메소드 호출
//작업 처리 2
}
}
- super.method(); 의 위치는 어디든지 가능; if문 안에도 가능!
'언어 > java' 카테고리의 다른 글
[Java] 7. 상속 (4) - 10~11 (0) | 2025.05.22 |
---|---|
[Java] 7. 상속 (2) - 5~6 (0) | 2025.05.20 |
[Java] 6. 클래스 (6) - singleton (0) | 2025.05.17 |
[Java] 6. 클래스 (5) - 13~15 (0) | 2025.05.14 |
[Java] 6. 클래스 (4) - 11~12 (0) | 2025.05.13 |