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() + "]";
}
}