[JAVA] 인터페이스

자바에서는 클래스를 이용한 다중 상속을 지원하지 않습니다. 하지만 인터페이스를 이용해서 다중 상속을 지원하고 있습니다.

인터페이스는 메서드의 집합을 추상화하여 정의합니다. 이렇게 정의된 메서드는 구현 내용을 포함하지 않습니다. 하위 클래스에서 구현을 해야 합니다. 다형성을 이용하여 많은 클래스를 동일한 타입으로 나타낼 수 있습니다.

interface 키워드를 이용하여 생성합니다.

 

인터페이스 특징

  1. 지역 변수 public static final 생략 가능합니다.
  2. default, static메서드로 구현가능합니다.(JAVA 8 이상)
  3. private를 이용해서 구현가능합니다.(JAVA 9 이상)

 

인터페이스 예제

// 인터페이스 정의
public interface Animal {
    // public static final 생략
    int age = 100;
    // default 접근제어자를 통한 메서드 구현
    default void show() {
        System.out.println("show");
    };
    // public abstract 생략
    void hide();
    // static 접근제어자를 통한 메서드 구현, 구현부에서 오버라이딩할 수 없음
    static void sound() {
        System.out.println("animal sound");
    };
}
// 인터페이스 구현
public class Cat implements Animal {
    @Override
    public void hide() {
        System.out.println("hide");
    }
    // 오버라이딩을 통해서 show도 재구현 가능
    @Override
    public void show() {
        System.out.println("cat show");
    }
}

public class Main {
    public static void main(String[] args) {
        int age = Animal.age;
        System.out.println(age); // 출력 : 100
        Animal animal = new Cat();
        animal.show(); // 출력 : cat show
        animal.hide(); // 출력 : hide
        // static 메서드라서 인터페이스에서 직접 호출
        Animal.sound(): // 출력 : animal sound
    }
}

'JAVA > 객체 지향 프로그래밍' 카테고리의 다른 글

[JAVA] 캡슐화  (0) 2023.08.20
[JAVA] 추상화 클래스  (0) 2023.08.19
[JAVA] 업캐스팅 & 다운캐스팅  (0) 2023.08.19
[JAVA] 다형성이란  (0) 2023.08.19
[JAVA] 메서드 오버라이딩 조건  (0) 2023.08.18