티스토리 뷰
✨ 상속이란?
- 상속이란 기존의 클래스에 기능을 추가하여 재정의하여 새로운 클래스를 정의하는 것을 의미한다. 상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스를 생성할 수 있다. 이때 기존에 정의되어 있던 클래스를 부모 클래스 또는 상위 클래스라고 하고, 상속을 통해 새롭게 작성되는 클래스를 자식 클래스 또는 하위 클래스라고 한다.
✨ 상속의 장점
1. 기존에 작성된 클래스를 재활용할 수 있다.
2. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서 해당 멤버를 작성하지 않아도 된다.
3. 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련한다.
✨ 형식
class 자식클래스이름 extends 부모클래스이름 { ... }
>> 자식 클래스에는 부모 클래스의 필드와 메소드만 상속되며, 생성자와 초기화 블록은 상속되지 않는다.
>> 부모 클래스의 접근 제어자가 private이나 default로 설정된 멤버는 자식 클래스에서 상속받지만 접근할 수 없다.
✨ 코드에 적용
- 먼저 일반 Camera 클래스를 만들어준다. 사진 촬영과 동영상 녹화 기능을 하는 메소드를 만들어 주고, 자식 클래스로 FactoryCam과 SpeedCam 클래스를 만들어 일반 Camera 클래스의 기능을 상속 받도록 한다.
public class Camera { // 부모 클래스
public String name;
public Camera() {
this.name = "카메라";
}
public void takePicture() {
System.out.println(this.name + " : 사진을 촬영합니다.");
}
public void recordVideo() {
System.out.println(this.name + " : 동영상을 녹화합니다.");
}
}
Camera 클래스 생성. 두 가지의 기능을 가지고 있다.
public class FactoryCam extends Camera { // 자식 클래스
public FactoryCam() {
this.name = "공장 카메라";
}
public void detectFire() {
System.out.println("화재를 감지합니다.");
}
}
FactoryCam은 부모 클래스의 기능을 상속 받고 추가로 화재 감지 기능을 가지고 있다.
public class SpeedCam extends Camera { // 자식 클래스
public SpeedCam() {
this.name = "과속단속 카메라";
}
public void checkSpeed() {
System.out.println("차량의 속도 측정");
}
public void recLicense() {
System.out.println("차량의 번호 인식");
}
}
SpeedCam 역시 부모 클래스의 기능을 상속 받고, 차량 속도 측정과 번호 인식이라는 기능을 추가로 가지고 있다.
>> SpeedCam과 FactoryCam에는 takePicture(), recordVideo() 기능이 없지만 부모 클래스로부터 물려 받아 그 기능을 가지게 되었다. 최종 출력 결과는 다음과 같다.
'Algorithm > Java' 카테고리의 다른 글
9장 퀴즈 (0) | 2023.07.03 |
---|---|
자바 기본편 - 7장 퀴즈 (0) | 2023.03.04 |
자바 기본편 - 접근 제어자 (0) | 2023.02.20 |
자바 기본편- Getter 와 Setter (0) | 2023.02.18 |
자바 기본편 - 용어 정리 (0) | 2023.02.13 |