Calculator.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public interface Calculator{
    public int plus(int i,int j);
    public int multiple(int i,int j);
    //기존에 interface는 추상클래스만 가져서 메서드 구현을 하면 에러가 난다.
    
    default int exec(int i, int j){
        return i + j;
    }
    //자바 8의 인터페이스는 default 키워드를 이용하여 메소드선언 후  구현까지!! 가능
  
    public static int exec2(int i,int j){
        return i*j;
    }
    //인터페이스에서 정의한 static메서드는 interface명.메소드명();
}
cs


MyCal.java

1
2
3
4
5
6
7
8
9
10
public class MyCal implements Calculator{
        public int plus(int i,int j){
            return i+j;
        }
        public int multiple(int i,int j){
            return i*j;
        }
        
    }
//이 클래스 사용하도록 MyCalTest.java클래스 만들기
cs

MyCalTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class MyCalTest{
    public static void main(String[] args){
        Calculator cal = new MyCal();//Calculator타입으로 cal 계산기 만듬 내가 만든계산기 MyCal()을 만든다.
        System.out.println(cal.plus(3,4));
        System.out.println(cal.multiple(2,3));
        int i = cal.exec(5,6); //default로 구현했던 메서드
        System.out.println(i);//정수값을 리턴하니까 
        //아까 default로 구현한 메서드도 사용 되어짐 인터페이스에다가 구현한 메서드도 잘 실행됨.
 
 
        //자바 8에서는 왜 default메서드를 만들었을까? 인터페이스가 변경이 되면 그 인터페이스를 구현하고 있는 모든 클래스에 해당하는 모든 클래스를 구현해야 하는 문제점
        //모두 구현해야 하는 불편함이 있다.
        //인터페이스에 메서드를 구현해 놓을 수 있도록 추가해 놓음
 
        //그리고, 자바 8의 인터페이스는 static 키워드를 이용하여 메소드 구현!!!이 가능
        //인터페이스에서 static한 메서드를 선언함으로서 인터페이스를 이용해서 간단한 기능을 가지는 utility성 인터페이스를 만들 수 있게 된다.
        //static한 메서드 이름은 인터페이스명.메소드명();(O)static한 메서드를 할때 호출방법 인터페이스명.메서드명 꼭 기억하기
        //cal.exec2(3,4);참조변수명.메소드명();은 불가
        Calculator.exec2(3,4);
 
    }
}
 
//자바 8이 등장하면서 인터페이스가 변경한게 있다.
//기본 인터페이스는 추상메서드만 가능했다.
//자바 8들어와서 default method와 static method정의 가능
//인터페이스가 default키워드로 선언되면 메서드를 구현할 수 있고,또한 구현한 클래스는 이런 default메서드를 오버라이딩 할 수 도 있다. 
cs


+ Recent posts