Calc.java
package interfaceex;
public interface Calc {
double PI=3.14;
int ERROR=-9999999;
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 interfaceex;
public abstract class Calculator implements Calc{
@Override
public int add(int num1, int num2) {
return num1+num2;
}
@Override
public int substract(int num1, int num2) {
return num1 - num2;
}
}
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 ERROR;
}else {
return num1 / num2;
}
}
public void showInfo() {
System.out.println("모두 구현하였습니다.");
}
}
CalcTest.java
package interfaceex;
public class CalcTest {
public static void main(String[] args) {
//Calc calc=new CompleteCalc() , Calculator calc=new CompleteCalc() 둘다 가능
CompleteCalc calc=new CompleteCalc();
int n1=10;
int n2=2;
System.out.println(calc.add(n1, n2));
System.out.println(calc.substract(n1, n2));
System.out.println(calc.times(n1, n2));
System.out.println(calc.divide(n1, n2));
calc.showInfo();
}
}
인터페이스를 구현한 클래스는 인터페이스 타입으로 변수를 선언하여 인스턴스를 생성할 수 잇음
인터페이스는 구현코드가 없기 때문에 타입상속이라고도 함