본문 바로가기
Programing/JAVA (& 혼공자Java)

자바(Java) - 상속1 (클래스 상속)

by a.k.a DUKI 2020. 10. 26.
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
반응형

댓글