Interface
클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다.
InterTest 인터페이스
package ex7_interface;
//인터페이스는 다른 클래스코드들과 중간 매개 역할을 담당
public interface InterTest {
//인터페이스에 들어갈 수 있는 것
//1. 상수 -> 값을 초기화 후 대입이 불가능
final int A = 100; //상수 이름은 대문자
//2. 추상 메서드
abstract int getA();
}
InterChild 클래스
package ex7_interface;
public class InterChild implements InterTest {
//인터페이스를 구현하기위해 다른 클래스에선 implements 예약어 사용
@Override
public int getA() {
return A; //InterTest의 상수 A반환
}
}
Main 클래스
package ex7_interface;
public class InterMain {
public static void main(String[] args) {
//인터페이스도 일반적으로 객체화 불가능
//InterTest it = new InterTest();
InterChild ic = new InterChild();
System.out.printf("getA() : %d\n",ic.getA());
}
}
인터페이스 예제
Menu 1, 2, 3 interface
package ex8_interface;
public interface Menu1 extends Menu2, Menu3{
//인터페이스끼리 상속이 가능
//다중상속도 가능
public String jajang();
}
package ex8_interface;
public interface Menu2 {
public String tangsuyuck();
}
package ex8_interface;
public interface Menu3 {
public String bokkembab();
}
Kitchen 클래스
package ex8_interface;
public class Kitchen implements Menu1/*Menu2, Menu3*/ {
@Override
public String bokkembab() {
return "밥 + 짜장 + 계란";
}
@Override
public String tangsuyuck() {
return "돼지고기 + 튀김옷 + 소스";
}
@Override
public String jajang() {
return "중면 + 짜장 + 완두콩";
}
}
Main 클래스
package ex8_interface;
public class KitchenMain {
public static void main(String[] args) {
Kitchen k = new Kitchen();
System.out.println("짜장면 : "+k.jajang());
System.out.println("탕수육 : "+k.tangsuyuck());
System.out.println("볶음밥 : "+k.bokkembab());
}
}