package ex0726;

public class Ex06_interface {
	public static void main(String[] args) {
		Store st = new Store();
		
		// Orange ob = new Orange();
		Fruit ob = new Orange();
		st.sell(ob);
		st.sell(new Apple());
		
		
	}
}
interface Fruit {
	public int getPrice();
	public String getName();
}

class Apple implements Fruit {
	@Override
	public int getPrice() {
		return 1000;
	}

	@Override
	public String getName() {
		return "사과";
	}
}

class Orange implements Fruit {
	@Override
	public int getPrice() {
		return 800;
	}

	@Override
	public String getName() {
		return "오렌지";
	}
}

class Store {
	public void sell(Fruit ft) {
		System.out.println(ft.getName() + " - > " + ft.getPrice());
	}
}

인터페이스는 추상 클래스 종류이다.

클래스를 위한 템플릿이다.

 

과일로 친다면

과일의 이름과 가격을 인터페이스의 메소드로 선언해놓음.

Apple 클래스에서 Fruit를 구현했을 때 이름과 가격을 재정의 해야만 컴파일 오류가 발생하지않는다. (이름과 가격이 틀이기 때문에 그 틀에 맞춰서 Apple을 구현한다.) 나중에 Store클래스의 sell메소드에서 Fruit의 틀에 맞춰 생성된 과일들의 객체를 받아 과일의 이름과 가격을 출력해준다.

+ Recent posts