Languages/Java

[HUFS/객체지향프로그래밍] #7 인터페이스

성중 2023. 1. 3. 21:26

인터페이스 선언

코드는 인터페이스(interface)를 통해 객체와 서로 통신해 코드 수정 없이 객체 교환이 가능하다

 

인터페이스의 메소드를 호출하면 객체의 메소드가 호출

인터페이스는 클래스와 유사하나 객체를 생성할 수 없어 생성자를 가질 수 없다

 

인터페이스 구조 (상수 필드, 추상 메소드)
추상 메소드는 최종적으로 객체에서 재정의되어 실행

인터페이스 예시

package sec01.exam03;

public interface RemoteControl {
	//상수
	int MAX_VOLUME = 10;
	int MIN_VOLUME = 0;
	
	//추상 메소드
	void turnOn();
	void turnOff();
	void setVolume(int volume);
}

 

인터페이스의 구현과 사용

인터페이스에서 정의된 추상 메소드를 재정의해서 실행 내용을 가지고 있는 클래스를 구현(implement) 클래스라 하며, 클래스 선언부에 implements 키워드와 인터페이스 이름이 명시된다

 

구현 클래스
인터페이스 변수를 선언하고 구현 객체를 대입해 사용
다중 인터페이스 구현 클래스 (하나의 객체를 다수의 인터페이스 타입으로 사용 가능)
인터페이스는 필드, 매개 변수, 로컬 변수의 타입으로 선언 가능

타입 변환과 다형성

인터페이스의 사용 방법은 동일하지만 구현 객체를 교체해 프로그램의 실행 결과를 다양화하는 것도 다형성에 해당한다

 

인터페이스의 다형성
구현 객체와 자식 객체는 인터페이스 타입으로 자동 타입 변환
필드의 다형성
매개변수의 다형성

구현 객체가 인터페이스 타입으로 자동 변환하면 인터페이스에 선언된 메소드만 사용 가능하다

 

구현 클래스에 선언된 필드나 메소드를 사용하려면 다시 강제 타입 변환
이 때 instanceof 연산자로 타입을 확인 후 안전하게 타입 변환
인터페이스 다중 상속 가능