Skip to content
- 인터페이스
- 서로 다른 하드웨어 장치들이 상호 데이터를 주고받을 수 있는 규격
- 규격이 필요한 이유
- 메인보드를 만드는 회사와 주변장치를 만드는 회사 사이에는 약속이 필요하기 때문
- 메인보드와 주변 장치 사이의 기계적 전기적 접속 규격과 데이터 전송 규격을 정해놓고, 이것만 지킨다면 메인보드나 주변 장치를 누가 만들건 문제없이 결합될 수 있다.
- 자바 인터페이스
- 상수와 추상 메소드로만 구성, 변수 필드 없음
- 메소드 : public abstract 타입으로 생략 가능
- 상수 : public static final 타입으로 생략 가능
- 인터페이스 샘플 소스
|
public interface PhoneInterface { public static final int BUTTONS = 20; abstract public void sendCall(); abstract public void receiveCall(); } |
- 생략한 소스
|
interface PhoneInterface { int BUTTONS = 20; void sendCall(); void receiveCall(); } |
- 인터페이스의 객체 생성 불가
- 인터페이스 간에 상속
- 인터페이스를 상속하여 확장된 인터페이스 작성 가능
- extends 키워드로 상속 선언
|
interface MobilePhoneInterface extends PhoneInterface { void sendSMS(); // 새로운 추상 메소드 추가 void receiveSMS(); // 새로운 추상 메소드 추가 } |
- 인터페이스 다중 상속 허용
|
interface MusicPhoneInterface extends PhoneInterface, MP3Interface { ...... } |
- 인터페이스 구현
- 인터페이스를 상속받아, 모든 추상 메소드를 구현한 클래스 선언
- implements 키워드로 인터페이스 구현
|
class FeaturePhone implements MobilePhoneInterface { // 인터페이스 구현 public void sendCall() { ... } public void receiveCall() { ... } public void sendSMS() { ... } public void receiveSMS() { ... } // 다른 메소드 추가 가능 public int getButtons() { ... } } |
- 여러 개의 인터페이스 동시 구현도 가능
- 클래스 상속과 인터페이스 구현을 동시에 할 수 있음
- 추상 클래스와 인터페이스 차이
- 추상클래스
- 추상함수가 1개 이상만 있으면 됨
- 구현된 함수가 있어도 됨
- 오버라이딩을 목적으로 추상함수를 사용, 즉 코드의 일부만 수정하기 위해 사용
- 인터페이스
- 모든 함수가 구현이 되어 있지 않고 명시만 되어 있음
- 다중 상속의 문제를 피하기 위해 사용
- 상속받는 자식 클래스에서 모든 함수를 구현해야 함
error: Content is protected !!