상속

DeokHun KIM·2022년 7월 14일
0

java

목록 보기
19/30
  • extends(확장) : 동일한 타입간에 확장해서 사용할 때 사용(단일 상속만 허용)
    -class extends class
    -interface extends interface

  • implements(구현/실체화) : 인터페이스(interface) 구현해서 사용할 때 사용
    -class implements interface

클래스 extends 클래스 implements 인터페이스 의 형태 가능

실습(class)

-부모-
class Phone {
	//필드(속성) -----------
	private String type; //전화기타입(형태)
	private String PhoneNo; //전화번호
	
	//생성자 -----------------
	public Phone(String phoneNo) {
		this.type = "Phone 타입";
		this.PhoneNo = phoneNo;
	}

	public Phone(String type, String phoneNo) {
		super();
		this.type = type;
		PhoneNo = phoneNo;
	}

	//메소드 -----------------
	public String getType() {
		return type;
	}

	public String getPhoneNo() {
		return PhoneNo;
	}
	
	//전화걸기 기능
	public void call() {
		System.out.println(">> 전화걸기~~");
	}
	
	//전화받기 기능
	public void receiveCall() {
		System.out.println(">> 전화받기~~");
	}
	
	//전화정보 보기
	public void view() {
		System.out.println("타입: " + type + ", 전화번호: " + PhoneNo);
	}

}
-자식-
class Mp3Phone {
	private String type;
	private String phoneNo;
	
	//Generate constructor using fields ,type 체크 후 생성
	public Mp3Phone(String phoneNo) {
		type = "Mp3Phone 타입";
		this.phoneNo = phoneNo;
	}

	//Generate constructor using fields ,type phoneNo 체크 후 생성
	public Mp3Phone(String type, String phoneNo) {
		super();
		this.type = type;
		this.phoneNo = phoneNo;
	}

	//겟타입만 생성자 만들어준다(우클릭 후 source, Generate constructor using fields)
	public String getType() {
		return type;
	}

	public String getPhoneNo() {
		return phoneNo;
	}
	
	//전화걸기 기능
	public void call() {
		System.out.println(">> 전화걸기");
	}
	
	//전화받기 기능
	public void receiveCall() {
		System.out.println(">> 전화받기");
	}
	
	//전화정보 보기
	public void view() {
		System.out.println("타입: " + type + ", 전화번호: " + phoneNo);
	}
	
	//음악 플레이 기능 -------------------
	public void playMusic() {
		System.out.println(">> 음악플레이");
	}

	@Override
	public String toString() {
		return "Mp3Phone [type=" + type + ", phoneNo=" + phoneNo + "]";
	}

}

실습(extends)

-부모-
class Phone {
	//필드(속성) -----------
	private String type; //전화기타입(형태)
	private String phoneNo; //전화번호
	
	//생성자 ---------------
	public Phone() {}
	
	public Phone(String phoneNo) {
		this.type = "Phone 타입";
		this.phoneNo = phoneNo;
	}

	public Phone(String type, String phoneNo) {
		super();
		this.type = type;
		this.phoneNo = phoneNo;
	}

	//메소드 ----------------
	public String getType() {
		return type;
	}

	public String getPhoneNo() {
		return phoneNo;
	}
	
	//전화걸기 기능
	void call() {
		System.out.println(">> 전화걸기~~");
	}
	
	//전화받기 기능
	public void receiveCall() {
		System.out.println(">> 전화받기~~");
	}
	
	//전화정보 보기
	public void view() {
		System.out.println("타입: " + type + ", 전화번호: " + phoneNo);
	}

	@Override
	public String toString() {
		return "Phone [type=" + type + ", phoneNo=" + phoneNo + "]";
	}

}
-자식-
// Phone 클래스를 상속받아서(extends : 확장해서) Mp3Phone 만들기
//Implicit super constructor Phone() is undefined for default constructor. Must define an explicit constructor
//위의 오류는 부모에 기본생성자가 없기 때문
public class Mp3Phone extends Phone {  //Phone을 상속받는다
    
	public Mp3Phone(String phoneNo) {  //나는 없지만 부모 클래스에는 있다
		super("Mp3Phone 타입", phoneNo);
	}
	
	public Mp3Phone(String type, String phoneNo) {
		super(type, phoneNo);
	}
	
	//음악 플레이 기능 -----------  //부모클래스가 가지고 있지 않은 기능 구현
	public void playMusic() {
		System.out.println(">> 음악플레이");
	}

	@Override
	public String toString() {
		return "Mp3Phone [타입=" + getType() + ", 전화번호=" + getPhoneNo() + "]";
	}

}

0개의 댓글