인터페이스(Interface)


  • 인터페이스를 구현한 다양한 객체 사용 > 다형성

  • 인터페이스는 클래스나 프로그램이 제공하는 기능을 명시적으로 선언

  • 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있음 ( 모듈이 무슨일을 해야하는지 명세 > 쓰는쪽에서 인터페이스만 보면 어떻게 만들어졌는지 굳이 안봐도 구현 가능! (jdbc jar - connection interface ..) )

  • 어떤 객체가 하나의 인터페이스 타입이다 = 그 인터페이스가 제공하는 모든 메서드를 구현했다

  • 모든 메서드 추상 메서드로 선언 (public abstract)

  • 모든 변수는 상수로 선언 (public static final)



  • ex)

    • Calc.java (인터페이스)

        public interface Calc {
        //인터페이스 > 구현코드 X
      
            double PI = 3.14;
            int ERROR = -999999;
                  
            int add(int num1, int num2);
            int sub(int num1, int num2);
            int mul(int num1, int num2);
            int div(int num1, int num2);
                  
        }
      
    • Calculator.java (Calc 구현)

        public abstract class Calculator implements Calc {
      
            @Override
            public int add(int num1, int num2) {
                return num1 + num2;
            }
      
            @Override
            public int sub(int num1, int num2) {
                return num1 - num2;
            }
      
            @Override
            public int mul(int num1, int num2) {
                return num1 * num2;
            }
      
      
        }
      
    • Div.java (Calculator 상속)

        public class Div extends Calculator {
        //타입상속 (구현상속 X)
      
            @Override
            public int div(int num1, int num2) {
                      
                if (num2 == 0) {
                    System.out.println(ERROR);
                }
                    return num1 / num2;
            }
      
        }
      
    • CalcMain.java

        public class CalcMain {
      
            public static void main(String[] args) {
      
                Calc calc = new Div();
                //인터페이스를 구현한 클래스(Div) -> 
                //인터페이스 형으로 선언한 변수로 형 변환(Calc calc)
                System.out.println(calc.add(10, 5));
                System.out.println(calc.div(15, 6));
                      
            }
      
        }
      
    • 출력결과

        15
        2
      

Categories:

Java