경주장

8주차 과제: 인터페이스 #8 static, private methods (~03.04) 본문

카테고리 없음

8주차 과제: 인터페이스 #8 static, private methods (~03.04)

달리는치타 2022. 2. 28. 13:39

✔️ 학습할 것 (필수)

  • 인터페이스 정의하는 방법
  • 인터페이스 구현하는 방법
  • 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
  • 인터페이스 상속
  • 인터페이스의 기본 메소드 (Default Method), 자바 8
  • 인터페이스의 static 메소드, 자바 8
  • 인터페이스의 private 메소드, 자바 9

Static Methods

Class와 동일하게 Interface에도 인스턴스 없이 레퍼런스 타입에 직접 붙혀 사용하는 Static Method를 구현할 수 있다.
자바 기본 인터페이스 중 하나인 Stream의 of 메소드는 static method로서 구현이 Interface에 포함되어있다.
public interface Stream<T> extends BaseStream<T, Stream<T>>{
	//Abstract Methods ...
    //Default Methods ...
	//Static Methods ...
    public static<T> Stream<T> of(T t) {
        return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
    }
    
    @SafeVarargs
    public static<T> Stream<T> of(T... values) {
        return Arrays.stream(values);
    }
}

Private Methods

자바 9에는 추가로 interface에 pricate method를 정의 할 수 있게되어 내부의 default method 혹은 static method의 구현에 활용할 수 있다

Default Method와 달리 Static, Private Method는 재정의 (Override)될 수 없으며 Static Method의 경우 인터페이스를 구현한 클래스의 레퍼런스 타입으로 접근 할 수 없고 오로지 인터페이스의 레퍼런스 타입으로 접근 가능하다.