ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 인터페이스 default 메소드
    Java 2022. 5. 18. 09:49
    반응형

    자바8이 나오면서 인터페이스에 대한 정의가 변경되었다.

    기존에 인터페이스는 추상 메소드만 가질 수 있었다.

    자바 8 부터는 default, static method를 정의할 수 있도록 변경되었다.

    인터페이스가 default로 선언이되면 메소드를 구현 할 수 있고, 이 메소드를 오버라이딩 할 수 있다.

     

     

    default 사용법 

    public interface Calculator {
    	public int plue(int i, int j);
        public int multiple(int i, int j);
        
        // 자바 8 부터는 dafult 키워드를 이용하여 메소드 구현이 가능해졌다. 원래는 에러 발생 
        default int exec(int i, int j){
        	return i + j ; 
        }
    }

     

    인터페이스가 변경이 되면 그 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야하는데, 

    자바 8 에서는 이런 문제를 해결하기 위해 인터페이스에 메소드를 구현 해 놓을 수 있도록 default를 추가하였다.

     

     

     

    static 사용법

    public interface Calculator {
            public int plus(int i, int j);
            public int multiple(int i, int j);
            default int exec(int i, int j){
                return i + j;
            }
            public static int exec2(int i, int j){   //static 메소드 
                return i * j;
            }
        }
    
        //인터페이스에서 정의한 static메소드는 반드시 인터페이스명.메소드 형식으로 호출해야한다.  
    
        public class MyCalculatorExam {
            public static void main(String[] args){
                Calculator cal = new MyCalculator();
                int value = cal.exec(5, 10);
                System.out.println(value);
    
                int value2 = Calculator.exec2(5, 10);  //static메소드 호출 
                System.out.println(value2);
            }
        }

    interface에서 정의한 static 는 반드시 ' 인터페이스명.메소드() ' 형식으로만 호출해야 한다.

    참조변수.메소드() 는 사용 X  인터페이스에서 스테틱한 메소드를 선언 함으로써, 인터페이스를 이용해

    간단한 기능을 가지는 유틸리티성 인터페이스를 만들 수 있게 되었다.

    반응형

    댓글

Designed by Tistory.