자바

JAVA 자바 클래스 상속

알통몬_ 2017. 3. 12. 19:33
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

자식 클래스를 선언할 때 어떤 부모 클래스를 상속 받을 것인지를 결정하고 선택된 부모 클래스는

아래와 같이 기술합니다.


Naver 클래스를 상속하는 Blog 클래스를 설계하고 싶다면

class Blog extends Naver {


처럼 작성하면 됩니다.


다른 언어와 달리 자바는 다중상속을 허용하지 않습니다. 

자식 클래스가 여러개의 부모 클래스를 가질 수 없습니다.

extends 뒤에는 단 하나의 클래스만 와야합니다.


클래스 상속 예제)

부모 클래스

public class CellPhone {

//필드

String model;

String color;

//생성자

//메소드

void powerOn() { System.out.println("전원을 켭니다."); }

void powerOff() { System.out.println("전원을 끕니다."); }

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;

//생성자

DmbCellPhone(String model, String color, int channel) {

this.model = model;// model과 color은 부모로부터 상속받은 필드입니다.

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("DMB 방송 수신을 멈춥니다.");

}

}


자식 클래스 사용

public class DmbCellPhoneExample {

public static void main(String[] args) {

//DmbCellPhone 객체 생성

DmbCellPhone dmbCellPhone = new DmbCellPhone("자바폰", "검정", 10);

//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(12);

dmbCellPhone.turnOffDmb();

}

}

반응형