implements도 할수있습니다.
- 클래스와 달리 접근제어자를 작성 하지 않아도되며,
{}를 통해 논리 식을 작성하지 않아도 됩니다.
📍 인터페이스
public interface PrintHello {
void print(String message); // 추상된 틀 (껍데기)
}
📍 구현 클래스
public class Print implements PrintHello{
@Override
public void print(String message) {
System.out.println(message);
}
}
( Implement ) 한다면 인터페이스를 사용한 클래스는 반드시 메소드를 구현해야 합니다.📍 Main 클래스
public class Main{
private PrintHello printHello;
public Main(PrintHello printHello) {
this.printHello = printHello;
}
public static void main(String[] args) {
PrintHello print = new Print();
printHello1.print("hello"); // hello
}
}
구현 클래스와 인터페이스를 연결하여 인스턴스를 사용함으로써 유연하고 확장 가능한 코드가 됩니다.
public Main(PrintHello printHello) 생성자를 통해 인터페이스를 주입 받는것이 좋다.
⭕ 3. 협업에서 인터페이스를 미리 추상된 틀을 만들어 설계대로 만들수 있게 할수 있습니다.
( 반환타입, 파라미터 인자 등 )
// 인터페이스의 다중 상속
public class User implements Account, Util {
}
- 가장큰 차이점은 "다중 상속" 을 할수있냐 없냐의 차이가 있습니다.
- 추상 클래스는 단일 상속만 허용합니다. ( 이러한 이유때문에 잘 사용 X )
- 인터페이스는 "다중 상속" 이 가능하며, 여러개의 인터페이스를 구현할수 있습니다.