728x90
반응형
현실에서 상속은 부모가 자식에게 물려주는 행위 이다. 동일하게 객체지향 프로그래밍에서도 부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있다.
-
부모 클래스 = 상위 클래스
-
자식 클래스 = 하위 클래스
상속(inheritance)은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 콛를 줄여준다.
상속을 이용하면, 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져오기 때문에 유지 보수 시간을 최소화할 수 있다.
클래스 상속
프로그램에서 상속은 자식 클래스를 선언할 때 어떤 부모 클래스를 상복 받을 것인지 결정하고, 선택된 부모 클래스는 다음과 같이 extends 뒤에 기술 한다.
class 자식클래스 extends 부모클래스{
//필드
//생성자
//메소드
}
- 여러 개의 부모 클래스를 상속할 수 없다. (단 하나의 부모 클래스만 허용)
- 부모 클래스에서 private접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외 된다.
- 부모의 자식 클래스가 다른 패키지에 존재할 경우 default 접근 제한된 필드와 메소드는 상속 대상에서 제외 된다.
예시1) 부모 클래스
public class CellPhone {
// 필드
String model;
String color;
// 생성자
// 메소드
void powerOn() {
System.out.println("전원 ON");
}
void powerOff() {
System.out.println("전원 OFF");
}
void bell() {
System.out.println("전화온다");
}
void sendVoice(String message) {
System.out.println("본인: " + message);
}
void receiveVoice(String message) {
System.out.println("상대방: " + message);
}
void hangUp() {
System.out.println("전화를 끊다.");
}
}
자식 클래스
public class DmbCellPhone extends CellPhone {
// 필드
int channel;
// 생성자
public DmbCellPhone(String model, String color, int channel) {
this.model = model;
this.color = color;
this.channel = channel;
}
// 메소드
void turnOnDmb() {
System.out.println("채널: " + channel + "번 DMB 방송을 수신 시작한다.");
}
void changeChannelDmb(int channel) {
this.channel = channel;
System.out.println("채널 " + channel + "번으로 바꾼다.");
}
void turnOffDmb() {
System.out.println("DBM 방송 수신을 멈춘다.");
}
}
자식 클래스 사용
public class DmbCellPhoneEx {
public static void main(String[] args) {
//DmbCellPhone 객체 생성
DmbCellPhone dmbCellPhone = new DmbCellPhone("iPhone", "스그", 12);
//CellPhone 클래스로부터 상속받은 필드
System.out.println("모델: "+dmbCellPhone.model);
System.out.println("생상: "+dmbCellPhone.color);
//DmbCellPhone 클래스의 필드
System.out.println("채널: "+dmbCellPhone.channel);
//CellPhone 클래스로부터 상속받은 메소드 호출
dmbCellPhone.powerOn();
dmbCellPhone.bell();
dmbCellPhone.sendVoice("ㅎㅇ");
dmbCellPhone.receiveVoice("ㅇㅇ?");
dmbCellPhone.sendVoice("ㅇㅇ 뭐함?");
dmbCellPhone.hangUp();
//DmbCellPhone 클래스의 메소드 호출
dmbCellPhone.turnOnDmb();
dmbCellPhone.changeChannelDmb(5);
dmbCellPhone.turnOffDmb();
}
}
※용어 정리
-
상속: 상위클래스(부모클래스)의 필드와 메소드를 하위클래스(자식클래스)에서 사용할 수 있도록 한다.
본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
728x90
반응형
'Work & Study > JAVA (& 혼공자Java)' 카테고리의 다른 글
자바(Java) - 상속3 (메소드 재정의) (0) | 2020.11.02 |
---|---|
자바(Java) - 상속2 (부모 생성자 호출) (0) | 2020.10.28 |
자바(Java) - 패키지와 접근 제한자3 (Getter & Setter 메소드) (0) | 2020.10.20 |
자바(Java) - 패키지와 접근 제한자2 (접근 제한자) (0) | 2020.10.20 |
자바(Java) - 패키지와 접근 제한자1 (패키지선언 & import문) (0) | 2020.10.19 |