프로그래밍/Java
인터페이스
파니동
2019. 12. 7. 11:20
인터페이스란 ?
인터페이스는 추상클래스와 마찬가지로, 하위클래스에서 기능구현을 강제하도록 하는 클래스이다. 추상클래스의 확장형이라고 생각할 수 있다. 추상메서드만 존재할 수 있다.
-
인터페이스 클래스 선언 - Calc.java
package interfaceex; public interface Calc { double PI = 3.14; // 컴파일 과정에서 상수가 됨. int ERROR = -999999999; // 컴파일 과정에서 상수가 됨. int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); int divide(int num1, int num2); int square(int num); }
-클래스를 인터페이스로 선언하였다. 인터페이스로 선언한 클래스의 멤버변수는 컴파일 과정에서 상수값으로 변경되고, 메서드 또한 컴파일과정에서 추상메서드로 바뀌게 된다.
-
인터페이스 클래스의 구현 - Calculator.java
package interfaceex; public abstract class Calculator implements Calc{ @Override public int add(int num1, int num2) { // TODO Auto-generated method stub return num1 + num2; } @Override public int substract(int num1, int num2) { // TODO Auto-generated method stub return num1 - num2; } }
-인터페이스 클래스의 일부를 구현하였다. 일부만 구현이 가능한 이유는 Calculator 가 추상클래스이기 때문이다. 누군가는 Calc 의 기능(메서드)를 구현할 것이다.
-
기능구현의 완전체 - CompleteCalc.java
package interfaceex; public class CompleteCalc extends Calculator{ @Override public int times(int num1, int num2) { return num1 * num2; } @Override public int divide(int num1, int num2) { if(num2 != 0) return num1 / num2; else return Calc.ERROR; } public void showInfo() { System.out.println("Calc 인터페이스를 구현하였습니다."); } @Override public int square(int num) { return num * 2; } }
-추상클래스인 Calculator를 상속받아 Calc에 있는 나머지 메서드들을 구현했다.
-
테스트하기.
package interfaceex; public class CalculatorTest { public static void main(String[] args) { int num1 = 10; int num2 = 5; CompleteCalc calc = new CompleteCalc(); System.out.println(calc.add(num1, num2)); System.out.println(calc.substract(num1, num2)); System.out.println(calc.times(num1, num2)); System.out.println(calc.divide(num1, num2)); System.out.println(calc.square(num1)); calc.showInfo(); } }
-상위 클래스의 기능을 모두 가지고 있는 CompleteCalc 클래스의 인스턴스만 생성한다
-인터페이스 또한 묵시적 형변환이 가능하다.( 상위클래스 자료형으로 변환 )
- 출처: Do it 자바프로그래밍