반응형
이번 글에서는 자바의 클래스 상속(Inheritance) 개념을 학습합니다.
상속을 통해 부모 클래스의 필드와 메서드를 자식 클래스에서 재사용하고,
필요한 기능은 추가 또는 수정(오버라이딩) 할 수 있습니다.
📦 부모 클래스 코드 (Phone.java)
package ch07.sec02;
public class Phone {
public String model, color;
public void bell() {
System.out.println("벨이 울립니다.");
}
public void sendVoice(String message) {
System.out.println("자신 : " + message);
}
public void receiveVoice(String message) {
System.out.println("상대 : " + message);
}
public void hangUp() {
System.out.println("전화를 끊습니다.");
}
}
📦 자식 클래스 코드 (SmartPhone.java)
package ch07.sec02;
public class SmartPhone extends Phone {
public boolean wifi;
public SmartPhone(String model, String color) {
this.model = model;
this.color = color;
}
public void setWifi(boolean wifi) {
this.wifi = wifi;
System.out.println("와이파이 상태를 변경했습니다.");
}
public void internet() {
System.out.println("인터넷을 연결합니다.");
}
}
📌 실행 코드 (SmartPhoneExample.java)
package ch07.sec02;
public class SmartPhoneExample {
public static void main(String[] args) {
SmartPhone phone = new SmartPhone("갤럭시", "은색");
System.out.println("모델 : " + phone.model);
System.out.println("색상 : " + phone.color);
System.out.println("와이파이 상태 : " + phone.wifi);
phone.bell();
phone.sendVoice("Hello?");
phone.receiveVoice("Hi!");
phone.sendVoice("Oh!");
phone.hangUp();
phone.setWifi(true);
phone.internet();
}
}
💬 코드 설명
- Phone 클래스
→ 전화 기능을 가진 부모 클래스 - SmartPhone extends Phone
→ Phone을 상속받은 자식 클래스 - SmartPhone 생성자
→ 부모의 model, color 필드를 직접 초기화 - bell(), sendVoice(), receiveVoice(), hangUp()
→ 부모 클래스에서 상속받은 기능 - setWifi(), internet()
→ 자식 클래스에서 새로 정의한 추가 기능
💻 실행 결과
모델 : 갤럭시
색상 : 은색
와이파이 상태 : false
벨이 울립니다.
자신 : Hello?
상대 : Hi!
자신 : Oh!
전화를 끊습니다.
와이파이 상태를 변경했습니다.
인터넷을 연결합니다.
📌 간단 정리
클래스 | 역할 |
Phone | 전화의 기본 기능 제공 (벨, 통화 등) |
SmartPhone | Phone을 상속받아 와이파이와 인터넷 기능 추가 |
💡 포인트 정리
- class 자식 extends 부모 → 상속 선언
- 부모 클래스의 필드와 메서드는 자식 클래스에서 그대로 사용 가능
- 자식 클래스는 기능을 확장하거나 필요 시 오버라이딩할 수 있음
- 상속을 통해 코드 재사용성 증가, 중복 감소
- 생성자에서는 this.필드명으로 부모 필드를 직접 초기화 가능
'Java > 자바 정리' 카테고리의 다른 글
58. super 키워드로 부모 메서드 호출하기 (오버라이딩 활용) (0) | 2025.05.02 |
---|---|
57. 메서드 오버라이딩(Method Overriding) (0) | 2025.05.02 |
56. super(...)를 통한 부모 생성자 호출 (0) | 2025.05.02 |
54. Getter/Setter를 이용한 캡슐화 (Encapsulation) (0) | 2025.04.29 |
53. 접근 제한자에 따른 접근 가능 범위 (public, default, private) (0) | 2025.04.29 |
52. 패키지와 import 사용하기 (0) | 2025.04.29 |