물체 사이에서 상호작용 할 수 있도록 하는 매개 역할
interface 인터페이스명{
필드
};
클래스로 인터페이스 구현
interface 인터페이스명{
}
class 클래스명 implements 인터페이스명{
추상메서드 구현
}
public static void main(String[] args) {
B b = new B();
b.methodA();
b.methodB();
}
}
interface Ainter{
final int x=10;
int y=20; // final 생략 가능
abstract void methodA();
void methodB(); // abstract 생략 가능
}
class B implements Ainter{
@Override
public void methodA() {
System.out.println("methodA()");
}
@Override
public void methodB() {
System.out.println("methodB()");
}
}
public static void main(String[] args) {
TourGuide guide=new TourGuide();
guide.leisureSports();
guide.sightseeing();
guide.food();
JapanTourGuide guide2=new JapanTourGuide();
guide2.leisureSports();
guide2.sightseeing();
guide2.food();
}
}
interface Providable{
void leisureSports();
void sightseeing();
void food();
}
class KoreaTour implements Providable{
@Override
public void leisureSports() {
System.out.println("한강에서 수상스키 투어");
}
@Override
public void sightseeing() {
System.out.println("경복궁 관람 투어");
}
@Override
public void food() {
System.out.println("전주 비빔밥 투어");
}
}
class JapanTour implements Providable{
@Override
public void leisureSports() {
System.out.println("도쿄 타워 번지점프 투어");
}
@Override
public void sightseeing() {
System.out.println("오사카 관람 투어");
}
@Override
public void food() {
System.out.println("초밥 투어");
}
}
class TourGuide{
private Providable tour = new KoreaTour();
public void leisureSports() {
tour.leisureSports();
}
public void sightseeing() {
tour.sightseeing();
}
public void food() {
tour.food();
}
}
class JapanTourGuide{
private Providable tour = new JapanTour();
public void leisureSports() {
tour.leisureSports();
}
public void sightseeing() {
tour.sightseeing();
}
public void food() {
tour.food();
}
}
interface 인터페이스1{}
interface 인터페이스2{}
interface 인터페이스3{}
class 클래스명 implements 인터페이스1, 인터페이스2, 인터페이스3...{
//모든 추상메서드 구현
}
public static void main(String[] args) {
MyCellPhone phone1 = new MyCellPhone();
Camera phone2 = new MyCellPhone();
Call phone3 = new MyCellPhone();
Memo phone4 = new MyCellPhone();
Clock phone5 = new MyCellPhone();
PhoneUser user1=new PhoneUser();
user1.call(phone1);
// user1.call(phone2); //불가, 다른 인터페이스
user1.call(phone3);
// user1.call(phone4); //불가, 다른 인터페이스
// user1.call(phone5); //불가, 다른 인터페이스
}
}
interface Camera{
void photo();
}
interface Call{
void calling();
}
interface Memo{
void write();
}
interface Clock{
void clock();
}
class MyCellPhone implements Camera, Call, Memo, Clock{
@Override
public void clock() {
System.out.println("clock()");
}
@Override
public void write() {
System.out.println("write()");
}
@Override
public void calling() {
System.out.println("calling()");
}
@Override
public void photo() {
System.out.println("photo()");
}
}
class PhoneUser{
void call(Call c) {
System.out.println("전화를 걸었습니다.");
}
}