본문 바로가기
JAVA

Interface default methods

by e-pd 2020. 10. 19.

Java8부터 인터페이스에서 default 메서드를 만들 수 있게 되었다.

 

1
2
3
4
5
6
7
8
public interface Bird {
    void speak();
 
    default void fly() {
        System.out.println("fly");
    }
}
 
cs

 

가령 새라는 인터페이스를 만들고 fly라는 default method를 생성하면

구현체에서 fly를 구현하지 않더라도 사용할 수 있다.

 

1
2
3
4
5
6
7
8
9
 
public class Pigeon implements Bird{
 
    @Override
    public void speak() {
        System.out.println("gugugu");
    }
 
}
cs

 

1
2
3
4
5
6
    public static void main( String[] args) {
        Bird bird = new Pigeon();
 
       bird.fly(); // fly
       bird.speak(); // gugugu
    }
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Duck implements Bird{
 
    @Override
    public void speak() {
        System.out.println("Quack");
    }
 
    @Override
    public void fly() {
        System.out.println("오리날다");
    }
}
 
cs

 

default method를 override 가능하다.

 

1
2
3
4
5
6
7
8
9
public class App {
 
    public static void main( String[] args) {
        Bird bird = new Duck();
 
       bird.fly(); // 오리날다
       bird.speak(); // Quack
    }
}
cs

 

인터페이스를 다중 구현하는 경우에 default method가 중복되는경우에는 에러가 발생한다.

'JAVA' 카테고리의 다른 글

자바 데이터 타입, 변수 그리고 배열  (0) 2020.11.17
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가  (0) 2020.11.17
Java8 Function  (0) 2020.10.18
Garbage Collection  (0) 2020.09.04
Java Heap  (0) 2020.09.04