[Java] 상속
2025. 4. 17. 14:20ㆍJava
상속
- 자바 언어에서 인터페이스와 상속 을 통해 객체지향 프로그래밍의 특징 중 하나인 다형성을 구현한다.
- 자바에서
다중 상속은 허용하지 않는다. - 자식 객체를 생성하면 부모 객체가 먼저 생성된 후 자식 객체가 생성됨
- new 자식클래스() → 부모 객체 먼저 생성 → 자식 객체 생성
Override 규칙
- 부모 메서드와 동일한 선언부(리턴 타입, 메서드명, 매개변수)
- 접근 제한자는 같거나 더 넓은 범위로 오버라이딩 가능
- 부모 메서드가 throws하는 예외보다 더 큰 범위의 예외를 선언할 수 없음
- (ex: 부모가 IOException을 throws하는 경우 자식은 Exception을 throws 할 수 없음)
오브젝트(Object) 클래스
- 자바의 모든 클래스가 자동으로 상속하는 최상위 부모 클래스, 자동 상속
toString(),equals(),hashCode(),getClass()등의 메소드를 제공
자동 타입 변환 (Upcasting)
- 자식 클래스의 객체를 부모 클래스 타입으로 변환하는 것
- 부모 클래스에 정의된 메서드만 사용 가능
Parent parent = new Child(); // 자동 타입 변환
parent.parentMethod(); // 부모 클래스 메서드 호출 가능
// parent.childMethod(); // 자식 클래스 메서드 호출 불가강제 타입 변환 (Downcasting)
- 부모 클래스 타입을 자식 클래스 타입으로 변환하는 것
- 강제 타입 변환 전 instanceof 연산자로 변환 가능 여부 확인
Parent parent = new Child(); // 자동 타입 변환
Child child = (Child) parent; // 강제 타입 변환
child.childMethod(); // 자식 클래스 메서드 호출 가능동적 바인딩(Dynamic Binding)
- 실행 시점(런타임)에 호출될 메서드가 결정되는 것
- 메서드 오버라이딩이 대표적
추상(Abstract) 메서드
- 메서드의 선언부만 있고 실행 내용이 없는 메서드
- 자식 클래스에서 반드시 오버라이딩해서 실행 내용을 작성해야 함
- 추상 클래스가 반드시 추상 메서드를 가질 필요는 없음
- abstract 키워드로 선언된 메서드 →
public abstract void test();
참고자료
'Java' 카테고리의 다른 글
| [Java] 컬렉션 자료구조 (1) | 2025.04.30 |
|---|---|
| [Java] Multi Thread (1) | 2025.04.29 |
| [Java] 제네릭 (0) | 2025.04.29 |
| [Java] 인터페이스 (1) | 2025.04.21 |
| [Java] 클래스 (1) | 2025.04.16 |