[Java] 인터페이스(Interface) 정의, 구현 방법

Hee·2024년 4월 2일

Java 복습

목록 보기
28/46
post-thumbnail

인터페이스 정의

인터페이스(Interface): 서로 관계가 없는 물체들이 상호 작용을 하기 위해 사용하는 장치나 시스템

  • 인터페이스 정의하는 방법
    • 추상 메소드와 상수를 정의할 수 있다.
    • 추상 메소드: 내용이 없는 메소드, 즉 구현이 되지 않은 메소드
public interface TV{
	public int MAX_VOLUME = 100;
    public int MIN_VOLUME = 0;
    
    public void turnOn();
    public void turnOff();
    public void changeVolume(int volume);
    public void changeChannel(int channel);
}

인터페이스에서 변수와 메소드를 선언하면 컴파일시 자동으로 아래와 같이 바뀐다.

public interface TV{
	public static final int MAX_VOLUME = 100;
    public static final int MIN_VOLUME = 0;
    
    public abstract void turnOn();
    public abstract void turnOff();
    public abstract void changeVolume(int volume);
    public abstract void changeChannel(int channel);
}


인터페이스 구현

  • 인터페이스 사용 방법
    • 해당 인터페이스를 구현하는 클래스에서 implements 키워드를 이용한다.
    • 인터페이스가 가지고 있는 메소드를 하나라도 구현하지 않는다면 해당 클래스는 추상클래스가 된다.(추상클래스는 인스턴스를 만들 수 없음)
public class LedTV implements TV{
	public void turnOn(){
    	System.out.println("켜다.");
    }
    public void turnOn(){
    	System.out.println("끄다.");
    }
    public void changeVolume(int value){
    	System.out.println(value + "로 볼륨조정하다.");
    }
    public void changeChannel(int value){
    	System.out.println(value + "로 볼륨조정하다.");
    }
}
public class LedTVExam{
	public static void main(String[] args){
    	TV tv = new LedTV();		// 인터페이스가 구현클래스를 참조함
        tv.turnOn();
        tv.changeVolume(50);
        tv.changeChannel(6)
        tv.turnOff();
    }
}

  • 참조변수의 타입으로 인터페이스를 사용할 수 있다. 이 경우 인터페이스가 가지고 있는 메소드만 사용할 수 있다.
  • 만약 TV인터페이스를 구현하는 LcdTV를 만들었다면 위의 코드에서 new LedTV부분만 new LcdTV로 변경해도 똑같이 프로그램이 동작할 것이다. 동일한 인터페이스를 구현한다는 것은 클래스 사용법이 같다는 것을 의미한다.
  • 클래스는 인터페이스를 여러 개 구현할 수 있다.

0개의 댓글