본문 바로가기
프로그래밍언어/Java

[Java] : 인터페이스, interface

by 오주현 2022. 1. 17.
반응형

인터페이스의 개념

인터페이스는 추상 클래스와 마찬가지로 직접 인스턴스를 생성할 수 없다는 특징을 가지고 있다.

또, 인터페이스는 일반 메서드와 생성자를 가질 수 없고, 필드 또한 static final을 붙인 상수화된 필드만 사용할 수 있으며 반드시 초기화를 해야 한다는 특징이 있다.

interface 인터페이스명 {
	static final 필드 및 추상 메서드 정의
}

인터페이스는 코드로 보면 이런 형식을 가지고 있고 추상 클래스와 비슷하지만 다중 상속을 위해 사용하기도 한다. 또, 인터페이스는 상속을 받기 위해 extends 대신에 implements 키워드를 사용한다.

interface TestCarSetting {
    static final int CAR_COUNT = 0;

    abstract void work();
}

먼저 interface를 생성해 주었고 static final로 변수를 고정시키고 abstract를 통해 work()를 추상 메서드로 지정해 주었다.

class TestSedan implements TestCarSetting {
    public void work() {
        System.out.println("승용차가 사람을 태우고 있다.");
    }
}

TestSedan 클래스에서 implements를 통해 TestCarSetting 인터페이스를 상속 받았고 추상 메서드인 work()를 오버라이딩해서 사용해 준다.

class TestTruck implements TestCarSetting {
    public void work() {
        System.out.println("트럭이 짐을 싣고 있다.");
    }
}

마찬가지로 인터페이스를 상속 받아 구현해 준다.

public class TestCar {
    public static void main(String[] args) {
        TestSedan testSedan = new TestSedan();
        testSedan.work();

        TestTruck testTruck = new TestTruck();
        testTruck.work();
    }
}

각 클래스의 인스턴스를 생성해주고 실행을 해보면

이처럼 정상적으로 인스턴스 생성이 완료된 것을 확인할 수 있다.

반응형

댓글