자바의 인터페이스

Jeong Gyejin·2023년 2월 23일
0

JAVA

목록 보기
10/18

인터페이스는 개발 코드와 객체가 서로 통신하는 접점의 역할을 합니다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킵니다. 그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 됩니다.

인터페이스 선언

인터페이스 선언은 interface 키워드를 사용하여 정의합니다.
여기서 인터페이스는 상수 필드와 추상 메소드만을 구성 멤버로 가집니다. 인터페이스는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없습니다.

상수 필드 선언

인터페이스는 객체 사용 방법을 정의한 것이므로 실행 시 데이터를 저장할수 있는 인스턴스 또는 정적 필드를 선언할 수 없습니다. 그러나 상수 필드는 선언이 가능합니다. 단, 상수는 인터페이스에 고정된 값으로 실행 시에 데이터를 바꿀수 없습니다.
인터페이스에 선언된 필드는 모두 public static final의 특성을 가지며 생략하더라도 컴파일 과정에서 자동으로 붙게 됩니다.

추상 메소드 선언

인터페이스를 통해 호출된 메소드는 최종적으로 객체에서 실행됩니다. 그렇기 때문에 인터페이스의 메소드는 실행 블록이 필요 없는 추상 메소드로 선언합니다.
인터페이스에 선언된추상 메소드는 모두 public abstract의 특성을 갖기 때문에 생략하더라도 컴파일 과정에서 자동으로 붙게 됩니다.

인터페이스 구현

개발 코드가 인터페이스 메소드를 호출하면 인터페이스는 객체의 메소드를 호출합니다. 객체는 인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드를 가지고 있어야 합니다.
이러한 객체를 인터페이스의 구현객체라고 하며, 구현 객체를 생성하는 클래스를 구현 클래스라고 합니다.

구현 클래스

보통의 클래스와 동일하지만 인터페이스 타입으로 사용할 수 있음을 알려주기 위해 클래스 선언부에 implements 키워드를 추가하고 인터페이스 이름을 명시해야 합니다. 그리고 인터페이스에 선언된 추상 메소드의 실체 메소드를 선언해야 합니다.

다중 인터페이스 구현 클래스

객체는 다음 그림과 같이 다수의 인터페이스 타입으로 사용할 수 있습니다.

  • 인터페이스 A와 인터페이스 B가 객체의 메소드를 호출할 수 있으려면 객체는 이 두 인터페이스를 모두 구현해야합니다.
  • 다중 인터페이스를 구현할 경우, 구현 클래스는 모두 인터페이스의 추상 메소드에 대해 실체 메소드를 작성해야 합니다.

인터페이스 사용

구현 객체가 인터페이스 변수에 대입된다는 것을 알았으니, 지금부터 인터페이스로 구현 객체를 사용하는 방법을 알아보려고 합니다.
클래스를 선언할 때 인터페이스는 필드, 생성자 또는 메소드의 매개 변수, 생성자 또는 메소드의 로컬 변수로 선언될 수 있습니다.

  • 인터페이스가 필드 타입으로 사용될 경우, 필드에 구현 객체를 대입할 수 있습니다.
	RemoteControl rc = new Television();
  • 인터페이스가 생성자의 매개변수 타입으로 사용될 경우, new 연산자로 객체를 생성할 때 구현 객체를 생성자의 매개값으로 대입할 수 있습니다.
	Class (RemoteControl rc){
			this.rc = rc;
  • 인터페이스가 로컬 변수 타입으로 사용될 경우, 변수에 구현 객체를 대입할 수 있습니다.
	void methodA(){
		RemoteControl rc = new Audio();
    }
  • 인터페이스가 메소드의 매개변수 타입으로 사용될 경우, 메소드 호출 시 구현 객체를 매개값으로 대입할 수 있습니다.
	void methodB(RemoteControl rc){
		...
    }
profile
항상 더 나은 개발자가 되기 위해서 끊임없이 공부하고 학습하면서 성장하는 사람이 되겠습니다.

0개의 댓글