정리하기 이전 자료 ( before 20-11 )/Java
인터페이스의 요소들
IMSfromSeoul
2020. 4. 13. 02:55
다음과 같은 Interface를 만들었다.
public interface InterfaceTest {
static void printStatic(){
System.out.println("interface static method");
printPrivateStatc();
}
default void print(){
System.out.println("interface default method");
printPrivate();
printPrivateStatc();
}
private void printPrivate(){
System.out.println("private interface method");
}
private static void printPrivateStatc(){
System.out.println("private static interface method");
}
}
인터페이스는 Java 8 부터 default method, static method를 사용할 수 있게 되었고 Java 9 부터 private method를 사용할 수 있게 됐다. 주목할 점은 static method안에는 private static method만 사용할 수 있지만, default method 안에는 static private method 및 private method 둘다 사용가능하다. default method를 interface에 추가함으로써 기능으로서는 abstract method와 차이점이 거의 없어졌다고 보면 될 것 같다. 사용 용도에는 차이점이 있겠지만 말이다.
public class InterfaceBody implements InterfaceTest{
// @Override
// public void print() {
// System.out.println("overRiding");
// }
}
InterfaceBody라는 이름의 클래스에서 InterfaceTest를 상속받았다. 이 때, default method는 overring 될 수 있다.
public class Test {
public static void main(String args[]) {
InterfaceTest.printStatic();
InterfaceBody interfaceBody = new InterfaceBody();
interfaceBody.print();
}
}
static method 와 interface를 상속받은 body 인스턴스를 통해 print method를 호출했다.
interface static method
private static interface method
(임의의 빈칸)
interface default method
private interface method
private static interface method
출력결과