본문 바로가기

JAVA

java #6 인터페이스

1.인터페이스
1) 자바의 인터페이스
a. 클래스가 구현해야 할 메소드들이 선언되는 추상형
b. 인터페이스 선언
   - interface 키워드로 선언
   ex) public interface serialdriver

 


2) 예제 자바 인터페이스

interface PhoneInterface {
	final int TIMEOUT = 10000;
	void sendCall();
	void receiveCall();
	default void printLogo() {
		System.out.println("** Phone **");
	}
}


3) 인터페이스의 구성 요소들의 특징
a.상수
public만 허용, public static final 생략


b.추상 메소드
public abstract 생략 가능


c. default 메소드
인터페이스에 코드가 작성된 메소드
인터페이스를 구현하는 클래스에 자동 상속
public 접근 지정만 허용. 생략 가능


d. private 메소드
인터페이스 내에 메소드 코드가 작성되어야 함
인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능


e. static 메소드
public, private 모두 지정 가능. 생략하면 public 

 


4) 자바 인터페이스의 전체적인 특징
a. 인터페이스의 객체 생성 불가
b. 인터페이스 타입의 레퍼런스 변수 선언 가능
c. 인터페이스 구현
d. 다른 인터페이스 상속 가능
e. 인터페이스의 다중 상속 가능

5) 예제 다중 인터페이스 구현

interface PhoneInterface {
	final int TIMEOUT = 10000;
	void sendCall();
	void receiveCall();
	default void printLogo() {
		System.out.println("** Phone **");
	}
}
	
interface MobilePhoneInterface extends PhoneInterface {
	void sendSMS();
	void receiveSMS();
}
interface MP3Interface {
	public void play();
	public void stop();
	
}
class PDA {
	public int calculate(int x,int y ) {
		return x + y;
	}
}
class SmartPhone extends PDA implements MobilePhoneInterface,MP3Interface {

	@Override
	public void play() {
		System.out.println("음악 연주");
	}

	@Override
	public void sendCall() {

		System.out.println("따르릉따르릉");
	}

	@Override
	public void receiveCall() {
		System.out.println("전화 왔어요");		
	}

	@Override
	public void sendSMS() {
		System.out.println("문자 갑니다");		
	}

	@Override
	public void receiveSMS() {
		System.out.println("문자 왔어요");		
	}

	@Override
	public void stop() {
		System.out.println("음악 중단");		
	}

	public void schedule() {
		System.out.println("일정 관리");
	}
	
}
public class InterfaceEx {
	public static void main(String[] args) {
		SmartPhone phone = new SmartPhone();
		phone.printLogo();
		phone.sendCall();
		phone.play();
		System.out.println("3과 5를 더하면 " + phone.calculate(3, 5));
		phone.schedule();

	}

}



6) 추상 클래스와 인터페이스 비교
a. 유사점
객체를 생성할 수 없고, 상속을 위한 슈퍼 클래스로만 사용
클래스의 다형성을 실현하기 위한 목적

 

b. 다른점