인터페이스의 여러가지 요소


  • 상수

    • 모든 변수는 상수로 변환됨 (public static final)
  • 추상메서드

    • 선언된 모든 메서드는 추상 메서드 (public abstract)
  • 디폴트 메서드 (~자바 8)

    • 구현을 가지는 메서드

    • 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드

    • 추상메서드만 사용하면 구현하는 클래스마다 오버라이딩하며 같은 코드를 반복해서 써야할 수 있기 때문에 디폴트 메서드를 사용해 공통적인 부분을 사용하도록 함

    • default 키워드 사용

    • 구현하는 클래스에서 재정의 가능

    • 인터페이스를 구현한 클래스의 인스턴스가 생성(new)되어야 사용 가능

  • 정적 메서드 (~자바 8)

    • 인스턴스 생성과 관계 없이 인터페이스타입으로 사용 가능한 메서드
  • private 메서드 (~자바 9)

    • 인터페이스를 구현한 클래스에서 사용하거나 재정의 할 수 없음

    • 인터페이스 내부에서만 사용하기 위한 메서드

    • default메서드나 static메서드에서 사용



  • ex)

    • Calc.java (interface)

        public interface Calc {
                  
            //default method
            default void description() {
                System.out.println("정수의 사칙연산");
                test();
            }
            /*오버라이딩하지 않는다면
                정수의 사칙연산
                test method
              출력됨*/
      
                  
            //static method
            static int total(int[] arr) {
                int total = 0;
                for (int num : arr) {
                    total += num;
                }
                testStatic();
                return total;
            }
                  
                  
            //private 메서드는 재정의 할 수 없음
            private void test() {
                System.out.println("test method");
                      
            }
                  
            private static void testStatic() {
                System.out.println("test static method");
            }
        }
      
    • Div.java (implements Calc.java)

        public class Div implements Calc {
      
            //재정의
            @Override
            public void description() {
                System.out.println("Overriding");
            }
        }
      
    • CalcMain.java (Main Class)

        public class CalcMain {
      
            public static void main(String[] args) {
      
                Calc calc = new Div();         
                calc.description(); //오버라이딩한 내용 출력
                      
                int[] arr = {1, 2, 3, 4, 5};
                System.out.println(Calc.total(arr));
            }
      
        }
      
    • 출력

        Overriding
        test static method
        15
      

Categories:

Java