Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[2주차] 51. 인터페이스, 인터페이스와 클래스 상속을 동시에 받는 예제 본문

K-DigitalTraining 강의/1. Java

[2주차] 51. 인터페이스, 인터페이스와 클래스 상속을 동시에 받는 예제

이대곤 2022. 6. 1. 18:44
 

아래의 예시는 Phone 클래스를 만드는데,
폰의 특성은 Shape2 클래스로 상속받고, 기능은 인터페이스 여러개로 상속받는 예제이다.

코드

interface Camera{
	void takePhoto(); // 인퍼페이스 안에있는 메서드라면 자동으로 public abstract 가 앞에 붙음
}

interface Music{
	void playMusic();
}

interface DBM{
	void viewTV();
}


class Shape2{
	private int size;
	private String color;
	
	Shape2(){
		
	}
	
	Shape2(int size, String color){
		this.size = size;
		this.color = color;
	}
	
	int getSize() {
		return size;
	}
	
	void setSize(int size) {
		this.size = size;
	}
	
	String getColor() {
		return color;
	}
	
	void seColor(String color) {
		this.color = color;
	}
}

class Phone extends Shape2 implements Camera, Music { // 클래스 상속 extends가 implements보다 앞에 위치해야 오류가 안남

	public Phone(int size, String color) {
		super(size, color);
	}

	
	//아래의 두 메서드는 반드시 완성해야 함. 인터페이스를 받았기 때문. 그래서 이름이 구현(implements)인가보다.
	@Override
	public void playMusic() {
		System.out.println("음악감상");
	}

	@Override
	public void takePhoto() {
		System.out.println("사진찍기");
	}
}

public class Ex06_13_인터페이스 {
	public static void main(String[] args) {
		
		Phone p = new Phone(7, "blue");
		
		//부모가 총 3개라서 다형성에 의해 아래와 같은게 가능한데 각 상황마다 접근 못하는 메소드들이 있음 
		//Shape2 p = new Phone(7, "blue");	//-> takePhoto(), playMusic() 두 메소드 호출불가
		//Camera p = new Phone(7, "blue");	//-> 아래서 takePhoto() 만 호출가능
		//Music p = new Phone(7, "blue");	//-> 아래서 playMusic() 만 호출가능
		
		System.out.println(p.getSize());
		System.out.println(p.getColor());
		System.out.println(p.getSize());
		System.out.println(p.getColor());
		p.takePhoto();
		p.playMusic();
	}
}

실행결과

7
blue
7
blue
사진찍기
음악감상
Comments