컴퓨터 & 코딩/Java

[혼공학습단 10기][혼공자] 인터페이스

구로그 2023. 7. 7. 14:58
728x90

✓ 인터페이스

- 객체의 사용 방법을 정의한 타입

- 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다

- 객체를 생성할 수 없기 때문에 생성자가 없다

[public] interface 인터페이스이름 { 
    // 상수
    //타입 상수이름 = 값;
    public int MAX_VOLUME = 10;
    // 추상 메소드
    // 타입 메소드이름(매개변수, ...);
    public void setVolume(int volume);
}
💡 추상 클래스와 추상 메소드 
추상 클래스: 실체 클래스들의 공통적인 특성을 추출해서 선언한 클래스 
추상 메소드
- abstract 키워드 + 메소드의 선언부만 있고 메소드 실행 내용인 중괄호가 없는 메소드.
- 하위 클래스가 반드시 실행 내용을 채우도록 강제됨.
- 자식 클래스가 반드시 추상 메소드를 재정의해서 실행 내용을 작성해야 함
- 인터페이스에서 추상 메소드는 모두 public abstract 

 

✓ 구현 객체: 인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드

✓ 구현 클래스: 구현 객체를 생성하는 클래스 

public class 구현클래스이름 implements 인터페이스이름 {
    // 인터페이스에서 선언된 추상 메소드의 실체 메소드 선언
}

 

구현 클래스 작성 후 new 연산자로 객체를 생성할 수 있다.

이때 인터페이스 변수를 선언하고 구현 객체를 대입해야 한다. 

// 인터페이스 변수 = 구현객체;
RemoteControl rc; // RemoteControl 인터페이스 변수 선언
rc = new Television(); // 구현 객체 대입
rc = new Audio(); // 구현 객체 대입

 

✏️ 인터페이스의 사용

- 필드 타입으로 사용: 필드에 구현 객체 대입

- 생성자의 매개 변수 타입으로 사용: new 연산자로 객체를 생성할 때 구현 객체를 생성자의 매개값으로 대입

- 로컬 변수 타입으로 사용: 변수에 구현 객체 대입

- 메소드의 매개 변수 타입으로 사용: 메소드 호출 시 구현 객체를 매개값으로 대입  

 

 

+ 인터페이스는 다중 상속을 허용

public interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2 { ... }

 

 


✓ 타입 변환 

 

- 자동 타입 변환 : 구현 객체가 인터페이스 타입으로 변환되는 것. 

❗️ 인터페이스 구현 클래스를 상속해서 자식 클래스를 만들었다면 자식 객체 역시 인터페이스 타입으로 자동 타입 변환 가능 
❗️ 자동 타입 변환 시 인터페이스에 선언된 메소드만 사용 가능

 

- 강제 타입 변환: 구현 클래스 타입으로 변환되는 것. 구현 클래스의 필드와 메소드를 사용할 수 있다

❗️ 구현 객체가 인터페이스 타입으로 변환되어 있는 상태에서 가능. 
어떤 구현 객체가 변환되어 있는지 확인하기 위해 instanceof 연산자를 사용한다. 
반응형