반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- string
- 정규식
- table
- javascript
- replace
- 이탈리아
- 자바스크립트
- map
- js
- list
- CSS
- Visual Studio Code
- IntelliJ
- 자바문법
- html
- 배열
- HashMap
- math
- Java
- json
- 이클립스
- Eclipse
- vscode
- input
- 인텔리제이
- 자바
- date
- Array
- 문자열
- ArrayList
Archives
- Today
- Total
어제 오늘 내일
[Java] 자식 클래스 호출 본문
Java에서 자식 클래스 호출이라는 표현은 보통 다음 두 가지 상황을 의미합니다:
- 자식 클래스 객체를 생성하여 사용하는 것
- 부모 타입으로 자식 객체를 다루는 것(다형성)
이 글에서는 자식 클래스를 어떻게 호출하고 사용하는지 예제 중심으로 정리합니다.
1. 자식 클래스 객체 생성(일반 호출)
자식 클래스는 부모 클래스를 상속받아 만들어집니다.
따라서 자식 객체를 만들면 부모의 기능도 함께 사용할 수 있습니다.
예:
class Parent {
void hello() {
System.out.println("부모 hello");
}
}
class Child extends Parent {
void bye() {
System.out.println("자식 bye");
}
}
public class Main {
public static void main(String[] args) {
Child c = new Child(); // 자식 클래스 호출(생성)
c.hello(); // 부모 메서드 사용 가능
c.bye(); // 자식 메서드 사용
}
}
출력:
부모 hello
자식 bye
설명
- new Child()로 자식 클래스가 호출(생성)
- 부모 기능 + 자식만의 기능 모두 사용 가능
2. 부모 타입으로 자식 객체 호출(다형성)
Java의 상속에서는 부모 타입으로 자식 객체를 참조할 수 있습니다.
이것이 다형성(Polymorphism)의 핵심입니다.
Parent p = new Child(); // 부모 타입으로 자식 객체 호출
p.hello(); // 부모 메서드 호출 가능
주의
- 부모 타입으로 참조할 경우 자식만의 메서드(bye)는 호출할 수 없음
- p.bye(); // ❌ 컴파일 오류
설명
- Child 객체가 실제로 생성되지만 Parent 타입으로 묶여 부모 기능만 접근 가능
3. 오버라이딩된 메서드 호출
자식 클래스가 부모의 메서드를 오버라이딩한 경우, 부모 타입으로 호출해도 자식의 메서드가 실행됩니다.
class Parent {
void hello() {
System.out.println("부모 hello");
}
}
class Child extends Parent {
@Override
void hello() {
System.out.println("자식 hello");
}
}
Parent p = new Child();
p.hello(); // 자식 hello
출력:
자식 hello
설명
- 타입이 Parent여도, 실제 객체는 Child이므로 자식 메서드 실행
4. instanceof로 자식 클래스 확인 후 호출
부모 타입 변수로 자식 객체를 다루는 경우, 다운캐스팅을 통해 자식 기능을 사용할 수 있습니다.
Parent p = new Child();
if (p instanceof Child) {
Child c = (Child) p; // 다운캐스팅
c.bye(); // 자식 메서드 호출 가능
}
출력:
자식 bye
설명
- instanceof로 타입 확인 후 캐스팅해야 안전함
5. 정리
- 자식 클래스는 new 자식클래스()로 직접 호출하여 객체 생성
- 자식 객체는 부모 기능을 모두 사용할 수 있음
- 부모 타입으로 자식 객체를 호출하면 부모 기능만 접근 가능 (다형성)
- 오버라이딩된 메서드는 부모 타입으로 호출해도 자식 메서드 실행
- 필요하면 다운캐스팅을 통해 자식 메서드를 다시 사용할 수 있음
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 클래스 형변환 (업캐스팅, 다운캐스팅) (0) | 2025.12.22 |
|---|---|
| [Java] 부모 생성자 호출 (super()) (0) | 2025.12.21 |
| [Java] 상속(Inheritance)과 오버라이딩(Overriding) (0) | 2025.12.21 |
| [Java] 상속, 부모클래스, 자식클래스 (0) | 2025.12.20 |
| [Java] 접근제어 (public, private, protected, default) (0) | 2025.12.20 |
Comments
