공부 기록

[Java] 인터페이스(Interface) 본문

프로그래밍/Java

[Java] 인터페이스(Interface)

I'm_ 2024. 1. 3. 12:37

들어가며

어제 객체 지향 프로그래밍의 특징에 대해서 공부하며 마지막에 객체 지향 프로그래밍의 특징이 인터페이스에도 녹아져 있다고 살짝 언급하였다.

오늘은 인터페이스에 대해서 공부하고 여기에서 드러나는 객체 지향의 특징은 무엇인지 고민하는 시간을 가졌다.

 

인터페이스

인터페이스란?

인터페이스(interfacte)는 사전적 의미로 두 장치를 연결하는 접속기를 의미한다.

자바에서는 인터페이스를 통해 메서드를 호출함으로써 객체가 변경된다고 하더라도 메서드를 호출하는 코드의 변경이 없이 다른 리턴값을 받을 수 있게 된다.

이러한 특징으로 인터페이스는 다형성 구현에 주된 기술로 사용된다. 

출처: https://interconnection.tistory.com/129

//인터페이스
public interface RemoteControl{
	//private 메서드
	public void turnOn(); //추상 메서드
}

//구현 클래스 1
public class Television implements RemoteControl{
	@Override
    public void turnOn(){
    	System.out.println("TV를 켭니다."); //메서드 정의
    }
}

//구현 클래스 2
public class Audio implements RemoteControl{
	@Override
    public void turnOn(){
    	System.out.println("오디오를 켭니다."); //메서드 정의
    }
}

//인터페이스의 사용
public class Main{
	public static void main(String[] args){
    	RemoteControl rc;
        rc = new Television(); //다형성
        rc.turnOn(); //TV를 켭니다
        
        rc = new Audio(); //다형성
        rc.turnOn(); //오디오를 켭니다.
    }
}

 

인터페이스가 가지고 있는 객체 지향의 특징

인터페이스에 객체 지향 프로그래밍의 특징인 추상화, 상속, 캡슐화, 다형성이 모두 녹아져 있지만, 앞서 언급했듯이 다형성의 주된 기술로 사용된다. 

인터페이스의 추상 메서드는 구현 클래스에서 재정의 해야하며, 재정의되는 내용은 클래스마다 다르다. 구현 객체는 인터페이스로 자동 타입 변환이 되고, 인터페이스 메서드 호출 시 구현 객체의 재정의된 메서드가 호출되어 다양한 실행 결과를 얻을 수 있다.

 

나가며

국비지원학원에서 프로젝트를 진행할 때 인터페이스를 만들었는데 인터페이스를 사용하는 이유를 이해하지 못했고, 제대로 활용하지도 못했다. 어제와 오늘 객체 지향의 특징과 인터페이스를 공부하며 인터페이스를 사용하는 장점과 필요성을 이해할 수 있게 되었다.


참고자료