객체 지향 프로그래밍 - 인터페이스
인터페이스
한모로그
2023. 1. 21. 11:52
인터페이스 역할
- 두 객체를 연결하는 역할
출처, 이것이 자바다
- 다형성 구현에 주된 기술
인터페이스 선언
- 인터페이스 선언은 class 키워드 대신 interface 키워드를 사용
- 접근 제한자로는 클래스와 마찬가지로 같은 패키지 내에서만 사용 가능한 default, 패키지와 상관없이 사용하는 public을 붙일 수 있음
출처, 이것이 자바다
package ch08.sec02;
/* 인터페이스 : 상속목적, 객체생성 불가능
- 멤버 : 추상메소드
- 사용 못하는 것 : 필드, 생성자, 메소드. 그러나 추상클래스에서는 사용가능.
*/
public interface RemoteControl {
/* 에러 발생
필드
String model;
생성자
public RemoteControl() {}
메소드
void turnOn() {
System.out.println("폰 전원을 켭니다.");
}
*/
//추상메소드
public void turnOn(); //컴파일과정에서 public abstract 키워드가 자동생성됨.
}
구현 클래스 선언
- 인터페이스에 정의된 추상 메소드에 대한 실행 내용이 구현
출처, 이것이 자바다
- implements 키워드는 해당 클래스가 인터페이스를 통해 사용할 수 있다는 표시이며, 인터페이스의 추상 메소드를 재정의한 메소드가 있다는 뜻
출처, 이것이 자바다
package ch08.sec02;
public class Television implements RemoteControl {
@Override
public void turnOn() {
System.out.println("TV를 켭니다.");
}
}
변수 선언과 구현 객체 대입
- 인터페이스는 참조 타입에 속하므로 인터페이스 변수에는 객체를 참조하고 있지 않다는 뜻으로 null을 대입할 수 있음
출처, 이것이 자바다
- 인터페이스를 통해 구현 객체를 사용하려면, 인터페이스 변수에 구현 객체의 번지를 대입해야 함
출처, 이것이 자바다
package ch08.sec02;
public class Audio implements RemoteControl {
@Override
public void turnOn() {
System.out.println("오디오를 켭니다.");
}
}
package ch08.sec02;
public class RemoteControlExample {
public static void main(String[] args) {
// RemoteControl rc = new RemoteControl(); //객체생성불가
RemoteControl rc;
rc = new Television();
rc.turnOn();
rc = new Audio();
rc.turnOn();
}
}