인터페이스(Interface)

// 인터페이스 : 설계 레벨, 표준(강제성)
// 예) 자동차의 기능을 설계 및 구현
//    인터페이스 : 자동차의 기능에 대한 전 세계 표준
interface IStandard {
	void run();  // 모든 자동차는 run이라는 단어로 무엇인가(전진) 구현
}
// 추상클래스 : 추상메서드와 일반멤버를 갖음 : 표준/규약/설계+구현
abstract class KS  {
	abstract void back();  //back이라는 단어를 강제....
	public void left() {   } // 일반 멤버에 대한 구현도 가능
}
// 일반 클래스  ==> final 키워드를 붙여서 최종(마지막/봉인) 클래스로 변경할 수 있음.
class Hyundai extends KS implements IStandard {
	abstract void back();  //추상클래스의 back이라는 단어를 강제 구현
	public void run() {  System.out.println("전진하다.");  }  //인터페이스 메서드 구현
	public void left() { System.out.println("좌회전하다"); } // 일반 멤버에 대한 오버라이드
}
class Spy extends Hyundai {
	// 스파이 클래스는 손쉽게 Hyundai의 3멤버를 사용 가능
	// Hyundai 클래스에 final을 붙이면 상속불가!
}
public class InterfaceDemo {
	public static void main(String[] args) {
		Hyundai sonata = new Hyundai();
		sonata.run();
		sonata.back();
		sonata.left();
	}
}