Java
인터페이스(Interface)
BINTHEWORLD
2022. 5. 23. 11:39
인터페이스란?
추상클래스 개념과 흡사하나 설계의 본질에 더욱 가까운 구현 방법
자바에서 다중 상속을 구현하게 해주는 고급 기술
추상클래스는 추상 메소드 외에 멤버 변수나 일반 메소드를 가질 수 있지만, 인터페이스에서는 반드시 사전에 정의된 추상 메소드의 상수만을 가질 수 있음
[추상클래스 VS 인터페이스]
인터페이스 예제
Dog.java
- 인터페이스
// 인터페이스
public interface Dog {
// 추상메소드 선언
abstract void crying();
// 일반메소드 구현 안되므로, 어떠한 메소드가 존재하는 지만 알려주는 설계 역할만 함
public void show();
}
Main.java
- Dog.java를 interface
- 상속과 마찬가지로 Add unimplemented methods(오버라이딩)로 반드시 메소드 구현
// implements : 인터페이스 / extends : 상속
public class Main implements Dog{
public static void main(String[] args) {
// 메인메소드의 인스턴스화
Main main = new Main();
main.crying();
main.show();
}
@Override
public void crying() {
System.out.println("월월");
}
@Override
public void show() {
System.out.println("Hello World!");
}
}
[다중상속] 1. 추상클래스 : 다중상속 불가능
Dog.java
- 추상클래스
// 추상클래스
abstract class Dog {
// 추상메소드 선언
abstract void crying();
}
Cat.java
- 추상클래스
// 추상클래스
abstract class Cat {
// 추상메소드 선언
abstract void crying();
}
2. 인터페이스 : 다중상속 가능
Dog.java
// 인터페이스
public interface Dog {
// 추상메소드 선언
abstract void crying();
// 일반메소드 선언
public void one();
}
Cat.java
// 인터페이스
public interface Cat {
// 추상메소드 선언
abstract void crying();
// 일반메소드 선언
public void two();
}
Main.java
public class Main implements Dog, Cat { // 인터페이스는 다중상속 가능
public static void main(String[] args) {
// 메인메소드의 인스턴스화
Main main = new Main();
main.crying();
main.one();
main.two();
}
// 인터페이스든 추상클래스든 선언된 메소드는 반드시 구현해야 함
@Override
public void crying() {
System.out.println("월월");
}
@Override
public void two() {
System.out.println("Two!");
}
@Override
public void one() {
System.out.println("One!");
}
}