Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 인터페이스 메소드 완벽 이해하기

자바에서 인터페이스(interface)의 메소드는 기본적으로 추상(abstract)입니다. 이는 인터페이스 안의 메소드가 메소드 시그니처(선언부)만 가지며, 실제 실행 코드인 본문(body)은 포함하지 않는다는 의미입니다. 따라서 인터페이스의 메소드가 실제로 어떻게 동작할지는 인터페이스를 구현하는 클래스에서 반드시 정의해야 합니다.


다음 예제를 통해 자세히 살펴보겠습니다.

예제

interface Car{
    public void carSpeed();
    public void sleep();
}
class Porsche implements Car{
    public void carSpeed(){
        System.out.println("The speed of the Porsche is too much");
    }
    public void sleep(){
        System.out.println("Sleeping for few milliseconds");
    }
}
public class Demo{
    public static void main(String[] args){
        Porsche my_car = new Porsche();
        my_car.carSpeed();
        my_car.sleep();
    }
}

실행 결과

The speed of the Porsche is too much
Sleeping for few milliseconds

코드 설명

먼저 'Car'라는 이름의 인터페이스가 정의되며, 이 인터페이스에는 'carSpeed'와 'sleep'이라는 두 개의 추상 메소드가 선언되어 있습니다. 이 메소드들은 본문 없이 시그니처만 존재합니다.


이후 'Porsche'라는 클래스가 implements 키워드를 통해 Car 인터페이스를 구현합니다. 이 클래스는 인터페이스에서 선언만 되어 있던 'carSpeed'와 'sleep' 메소드의 실제 구현 내용을 작성합니다.


마지막으로 'Demo' 클래스의 main 메소드에서 Porsche 클래스의 인스턴스를 생성한 뒤, 해당 객체를 통해 'carSpeed'와 'sleep' 메소드를 호출하면 각각의 실행 결과가 출력됩니다.

참고: 자바 8 이후의 변화

자바 8부터는 인터페이스에도 default 메소드와 static 메소드를 정의할 수 있어 구현체를 가질 수 있게 되었습니다. 다만 일반적인 추상 메소드는 여전히 본문 없이 선언만 가능하며, 이를 구현하는 클래스는 반드시 해당 메소드를 오버라이딩해야 합니다.