인터페이스(Interface)
2024. 4. 16. 17:49ㆍJava
- 서로 관계가 없는 물체들이 상호 작용을 하기 위해서 사용되는 장치나 시스템
- 클래스 구조상의 관계와 상관없이 클래스들에 구현되어질 수 있는 규약
- 즉, 클래스들 사이의 유사한 특성을 부자연스러운 상속 관계를 설정하지 않고 얻어냄
언제 사용할까?
- 하나 또는 그 이상의 클래스들에서 똑같이 구현되어질 법한 메소드를 선언하는 경우
- 클래스 자체를 드러내지 않고 객체의 프로그래밍 인터페이스를 제공하는 경우
인터페이스의 상속
- 인터페이스는 다중상속을 지원하지 않는 자바에서 다중 상속의 장점을 활용하기 위해 도입
- 한 클래스는 하나의 부모클래스를 가지며 하나 이상의 인터페이스를 구현할 수 있음
- 인터페이스 사이에서는 다중 상속이 가능함
- 인터페이스는 interface 키워드로 선언하고 implements 키워드로 사용
- 인터페이스를 구현한 클래스에서 추상 메서드를 반드시 정의해야 함
public interface Ainter {
public void aMethod();
public void same();
}
public class AImpl implements Ainter {
@Override
public void aMethod() {
System.out.println("a매소드 구현");
}
@Override
public void same() {
System.out.println("same메소드 구현");
}
public void say(){
System.out.println("하하");
}
}
인터페이스에서 default 키워드
- 인터페이스가 dafault키워드로 선언되면 메소드가 구현될 수 있다.
- 또한 이를 구현하는 클래스는 default메소드를 오버라이딩 할 수 있다.
- 인테페이스가 변경이 되면, 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야 하는 문제가 있다. 이런 문제를 해결하기 위해 인테페이스에 메소드를 구현할 수 있도록 해놓았다.
public interface Drawable {
default public void draw(){
System.out.println("도형을 그립니다.");
}
default public void test(){
//인터페이가 변경되면 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야 하는 문제가 있다.
//이를 해결하고자 default가 생겼다.
System.out.println("default 메소드 입니다.");
}
}
'Java' 카테고리의 다른 글
내부 클래스 (0) | 2024.04.16 |
---|---|
예외처리(Exception) (1) | 2024.04.16 |
추상 클래스 (0) | 2024.04.16 |
클래스 생성 및 인스턴스화 (0) | 2024.03.26 |
접근제한자 (0) | 2024.03.26 |