[스터디할래 08] 인터페이스

이 글은 ‘백기선’ 개발자님과 함께하는 온라인 자바 스터디에 참여하여 준비/학습한 내용을 정리하는 글입니다.📚

정리는 Java Tutorials - Interface를 기반으로 하였습니다.

인터페이스 정의하는 방법

public interface SampleInterface {
	// constants
	static final int sampleCount = 0;

	// abstract method
	void doSth();

	// default method
	default void print() {
		System.out.println("This is SampleInterface");
	}

	// static method
	static int count() { // implicitly public 이다.
		return sampleCount;
	}
}

인터페이스 구현하는 방법

public class SampleClass implements SampleInterface, OtherInterface {
	@Override
	void doSth() {
		// 추상 메소드 바디를 반드시 구현
	}
}

인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

인터페이스 상속

public interface FirstInterface {
	void doSthFirst();

	// void soSthSecond();
}

// 인터페이스를 사용하는 기존 사용자는 FirstInterface를 그대로 사용할 수도 있고,
// 새로 구현된 SecondInterface를 사용한 후 추가된 메소드를 구현할 수도 있다.
public interface SecondInterface extends FirstInterface {
	void doSthSecond();	
}

인터페이스의 기본 메소드 (Default Method), 자바 8

인터페이스의 static 메소드, 자바 8

인터페이스의 private 메소드, 자바 9

처럼, 인터페이스에서 몸체를 가진 private 메소드를 구현할 수 있도록 추가되었다. 이것이 의미하는 바가 무엇인가 ?

public interface JavaNineInterface {
     
    public abstract void method1();

	// 이런 코드가 가능하다.     
    public default void method2() {
    	commonMethod();
    }
     
    public default void method3() {
    	commonMethod();
    }

    private void commonMethod(){
        System.out.println("This is common private method");
    } 
}

라이브클래스 후 추가