인터페이스란?
- 모든 메서드가 추상 메서드로 선언됨 public abstract
- 모든 변수는 상수로 선언됨 public static final
interface 인터페이스 이름{
public static final float pi = 3.14F;
public void makeSomething();
}
- 자바 8 부터 디폴트 메서드(default method)와 정적 메서드(static method) 기능의 제공으로 일부 구현 코드가 있음
인터페이스 정의와 구현
Calc.java
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
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 com.ch11;
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;
return num1/num2;
}
public void showInfo() {
System.out.println("계산완료");
}
}
CalculatorTest.java
package com.ch11;
public class CalculatorTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 2;
CompleteCalc cal = new CompleteCalc();
System.out.println(cal.add(num1, num2));
System.out.println(cal.substract(num1, num2));
System.out.println(cal.times(num1, num2));
System.out.println(cal.divide(num1, num2));
cal.showInfo();
}
}
== 결과
인터페이스 구현과 형 변환
- 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있음
Calc calc = new CompleteCalc();
- 상속에서의 형 변환과 동일한 의미
- 클래스 상속과 달리 구현 코드가 없으므로 여러 인터페이스를 구현할 수 있음 ( cf. extends)
- 형 변환되는 경우 인터페이스에 선언된 메서드만을 사용가능함
'개발공부 > 객체 지향 핵심' 카테고리의 다른 글
[Java] 13. 인터페이스를 활용한 다형성 구현 (dao 구현하기) (0) | 2022.02.02 |
---|---|
[Java] 12. 인터페이스는 왜 사용하는가 (0) | 2022.02.02 |
[Java] 10. 추상 클래스의 응용 - 템플릿 메서드 패턴 (0) | 2022.02.02 |
[Java] 09. 추상 클래스(abstract class) 구현하기 (0) | 2022.02.02 |
[Java] 08. 다운 캐스팅과 instanceof (0) | 2022.02.01 |