
- 모든 메서드가 추상 메서드로 선언됨
public abstract- 모든 변수는 상수로 선언됨
public static final
interface 인터페이스 이름{ public static final float pi = 3.14F; public void makeSomething(); }
- 자바
8부터 디폴트 메서드(default method)와 정적 메서드(static method) 기능의 제공으로 일부 구현 코드가 있음
Calc.java
package ch11; public interface Calc { double PI = 3.14; int ERROR = -99999999; int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); int divide(int num1, int num2); }
Calculator.java
package ch11; public abstract class Calculator implements Calc { public int add(int num1, int num2) { return num1 + num2; } public int substract(int num1, int num2) { return num1 - num2; } }
CompleteCalc.java
package ch11; public class CompleteCalc extends Calculator { public int times(int num1, int num2) { return num1 * num2; } public int divide(int num1, int num2) { if( num2 == 0 ) return ERROR; else return num1 / num2; } public void showInfo() { System.out.println("모두 구현했습니다."); } }
CalculatorTest.java
package ch11; public class CalculatorTest { public static void main(String[] args) { int num1 = 10, num2 = 2; // Calc에 있는 메서드만 사용 가능 Calc calc = new CompleteCalc(); System.out.println(num1 + "+" + num2 + "=" + calc.add(num1, num2)); System.out.println(num1 + "-" + num2 + "=" +calc.substract(num1, num2)); System.out.println(num1 + "*" + num2 + "=" +calc.times(num1, num2)); System.out.println(num1 + "/" + num2 + "=" +calc.divide(num1, num2)); } }
출력 결과
- 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있음
ex>Calc calc = new CompleteCalc();
- 인터페이스를 구현한 클래스:
CompleteCalc()- 인터페이스 형으로 선언한 변수:
Calc- 상속에서의 형 변환과 동일한 의미
- 클래스 상속과 달리 구현 코드가 없으므로 여러 인터페이스를 구현할 수 있음
- 형 변환되는 경우 인터페이스에 선언된 메서드만을 사용가능하다.
Calc calc = new CompleteCalc();로 인스턴스 생성시 사용할 수 있는 메서드
->add(),substract(),times(),divide()CompleteCalc calc = new CompleteCalc();로 인스턴스 생성시 사용할 수 있는 메서드
->add(),substract(),times(),divide(),showInfo()