java 기초 공부 내용 정리(인터페이스)

홍준성·2022년 6월 3일
0

java 기초 공부

목록 보기
22/39

인터페이스

물체 사이에서 상호작용 할 수 있도록 하는 매개 역할

인터페이스의 멤버

  • 상수 : final 타입 변수명 = 값;
  • 추상 메서드 : abstract 리턴 타입 메서드명();

인터페이스의 구현 방법

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("전화를 걸었습니다.");
	}
}
profile
준성이의 개발자 공부 velog

0개의 댓글