-
인터페이스컴퓨터 공부/JAVA 2020. 3. 26. 14:12
인터페이스 (규격 선언 -> 서로 다르게 구현 ; 다형성)
¤ 클래스가 구현해야 할 메소드들이 선언되는 추상형
¤ 인터페이스 선언
인터페이스 인터페이스의 구성 요소들
¤ 상수
public만 허용, public static final 생략
¤ 추상 메소드
public abstract 생략 가능
¤ default 메소드
인터페이스에 코드가 작성된 메소드
인터페이스를 구현하는 클래스에 자동 상속
public 접근 지정만 허용. 생략 가능
¤ private 메소드
인터페이스 내에 메소드 코드가 작성되어야 함
인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능
¤ static 메소드
npublic, private 모두 지정 가능. 생략하면 public
인터페이스 객체 생성 불가!
인터페이스 타입의 레퍼런스 변수 선언 가능
인터페이스 상속 -> 모든 추상 메소드 반드시 구현 implements (동시 여러개 가능)
다중 상속 가능
다른 인터페이스 상속 가능 extends
class SamsungPhone implements PhoneInterface { // 인터페이스 구현
// PhoneInterface의 모든 메소드 구현 --> public 선언!
public void sendCall() { System.out.println("띠리리리링"); }
public void receiveCall() { System.out.println("전화가 왔습니다."); }
// 메소드 추가 작성
public void flash() { System.out.println("전화기에 불이 켜졌습니다."); }
}
ex) 인터페이스를 구현하고 동시에 클래스를 상속받는 사례
interface PhoneInterface { // 인터페이스 선언 final int TIMEOUT = 10000; // 상수 필드 선언 void sendCall(); // 추상 메소드 void receiveCall(); // 추상 메소드 default void printLogo() { // default 메소드 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; } } // SmartPhone 클래스는 PDA를 상속받고, // MobilePhoneInterface와 MP3Interface 인터페이스에 선언된 추상 메소드를 모두 구현한다. class SmartPhone extends PDA implements MobilePhoneInterface, MP3Interface { // MobilePhoneInterface의 추상 메소드 구현 @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("문자왔어요."); } // MP3Interface의 추상 메소드 구현 @Override public void play() { 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(); } }
추상 vs 인터페이스 추상 클래스 -> 메서드 구현 가능, public 없으면 무조건 구현되어야 함, 다중 상속 불가
인터페이스 -> 추상화가 높음, 진짜 설계만, 구현 불가!!, 다중 상속 가능
'컴퓨터 공부 > JAVA' 카테고리의 다른 글
ArrayList vs. LinkedList vs. Vector, 제너릭 함수 (0) 2020.03.28 Object, Wrapper class (0) 2020.03.27 추상 메소드와 추상 클래스 (0) 2020.03.26 상속 (0) 2020.03.26 접근 지정자, static (0) 2020.03.26