728x90

인터페이스(Interface)란?

자바에서는 인터페이스를 통해 다중 상속을 지원한다.
인터페이스란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다.
즉, 특정 기능을 개발하는 데 있어 공통적인 기능을 명시하고 강제적으로 구현하게끔 하는 역할을 한다.
인터페이스는 추상 메소드와 상수만을 포함한다.

public interface Animal {
	void cry();
}

public class Cat implements Animal {
	@Override
    public void cry() {
        System.out.println("냐옹냐옹!");

    }
}

public class Dog implements Animal {
	@Override
    public void cry() {
        System.out.println("멍멍!");
    }
}

public class Main {
	public static void main(String[] args) {
    	Cat cat = new Cat();
        Dog dog = new Dog();
        
        cat.cry();
        dog.cry();
    }
}

 

디폴트 메소드(Default Method)

자바8 버전 이후부터는 디폴트 메소드를 사용할 수 있다.

인터페이스의 메소드는 몸통(구현체)을 가질 수 없지만 디폴트 메서드를 사용하면 실제 구현된 형태의 메서드를 가질 수 있다.

public interface Animal {
    String getFood();

    default void printFood() {
        System.out.printf("my food is %s\n", getFood());
    }
}

 

스태틱 메소드(Static Method)

자바8 버전 이후부터는 인터페이스에 스태틱 메소드를 사용할 수 있다.

인터페이스에 스태틱 메소드를 구현하면 일반 클래스의 스태틱 메서드를 사용하는 것과 동일하게 사용할 수 있다.

public interface Animal {
    String getFood();

    default void printFood() {
        System.out.printf("my food is %s\n", getFood());
    }

    int LEG_COUNT = 4;  // 인터페이스 상수

    static int speed() {
        return LEG_COUNT * 30;
    }
}
728x90

'2022 하계방학 SW 집중교육' 카테고리의 다른 글

[Java] Package  (0) 2022.08.15
[Java] Thread  (0) 2022.08.15
[Github] 파일 업로드  (0) 2022.08.11
[Java] Coding Convention  (0) 2022.08.11
[Java] this  (0) 2022.08.11
딩딩크롱