JAVA, JSP

java - 7장 상속

suji0730 2024. 8. 8. 15:59

 

1) 상속

- 부모가 자식에게 물려주는 행위를 말한다.

- 객체 지향 프로그램에서도 부모 클래스의 필드와 메소드를 자식 클래스에게 물려줄 수 있다.

 

1-1. 클래스 상속

- 자식이 부모를 선택한다.

- 자식 클래스를 선언할 때 어떤 부모로부터 상속받을 것인지를 결정하고, 부모 클래스를 다음과 같이 extends 뒤에 기술한다.

- 다중상속은 허용하지 않는다. extends 뒤에는 단 하나의 부모 클래스만이 와야 한다.

public class 자식클래스 extends 부모클래스{}

 

 

1-2. 부모 생성자 호출

* super() : 컴파일 과정에서 자동 추가되는데, 이것은 부모의 기본 생성자를 호출한다. 부모 클래스에 기본 생성자가 없다면 자식 생성자 선언에서 컴파일 에러가 발생한다.

 

Phone.java

package kr.or.ksmart.eduJava.inherit;

public class Phone {

	//필드 선언
	public String model;
	public String 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 kr.or.ksmart.eduJava.inherit;

public class SmartPhone extends Phone {
	
	//필드 선언
	public boolean wifi;
	
	//생성자 선언
	public SmartPhone(String model, String color) {
		super(); //생략가능(컴파일 시 자동 추가됨)
		this.model = model;
		this.color = color;
	}
	
	//메소드 선언
	public void setWifi(boolean wifi) {
		this.wifi = wifi;
		System.out.println("와이파이 상태를 변경했습니다.");
	}
	
	public void internet() {
		System.out.println("인터넷에 연결합니다.");
	}
}

 

Main.java

//SmartPhone 객체 생성
SmartPhone myPhone = new SmartPhone("갤럭시", "은색");

//Phone으로부터 상속받은 필드 읽기
System.out.println("모델 : " + myPhone.model);
System.out.println("색상 : " + myPhone.color);
System.out.println("와이파이 상태 : " + myPhone.wifi);

myPhone.bell();
myPhone.sendVoice("여보세요");
myPhone.receiveVoice("안녕하세요! 저는 홍길동인데요.");
myPhone.sendVoice("아~ 네, 반갑습니다.");
myPhone.hangUp();

//SmartPhone의 메소드 호출
myPhone.setWifi(true);
myPhone.internet();