자바 인터페이스(1)
인터페이스란?
추상클래스가 부분적으로만 완성된 미완성 설계도라고 한다면 인터페이스는 구현된 것은 없고 밑그림만 그려진 기본 설계도라고 할 수 있다. 밑그림만 그려져 있기 때문에 그 자체로 사용되기 보다는 다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다.
인터페이스 작성
인터페이스의 작성은 interface키워드를 사용하고 접근제어자로 public, default를 사용할 수 있다.
interface 인터페이스이름 {
public static final 상수이름 = 값;
public abstract 메서드이름(매개변수);
default void 메서드이름() { 구현부분 };
}
인터페이스의 제약사항
- 모든 멤버변수는 public static final 이어야 한다.
- 모든 메서드는 public abstract 이어야 한다(static 메서드, default 메서드 제외)
이는 생략이 가능하며 컴파일 시 컴파일러가 자동적으로 추가해준다.
+) default 메서드의 존재 이유
인터페이스에 메서드가 추가될 경우 이 인터페이스를 구현한 모든 클래스들이 새로 추가된 메서드를 구현해야되기 때문에 디폴트 메서드를 고안하게 되었다. default 메서드는 추상 메서드가 아니기 때문에 새로 추가되어도 해당 인터페이스를 구현한 클래스를 변경하지 않아도 된다.
인터페이스의 구현
인터페이스는 그 자체로 인스턴스를 생성할 수 없으며 추상클래스가 상속을 통해 추상메서드를 완성하는 것처럼 인터페이스도 몸통을 만들어주는 클래스를 작성해야 하는데 인터페이스는 구현한다는 의미의 implements를 사용한다.
class 클래스이름 implements 인터페이스이름 {
//추상메서드 구현
}
ex) 인터페이스 구현 예시
public interface InterfaceA {
public void methodA();
}
public class ImplementationClass implements interfaceA {
@Override
public void methodA(){
System.out.println("저는 메소드 A입니다~~!");
}
}
인터페이스의 상속
인터페이스는 인터페이스로부터만 상속받을 수 있으며 다중상속이 가능하다.
public interface interfaceA {
public void methodA();
}
public interface interfaceB {
public void methodB();
}
public interface interfaceC extends interfaceA, interfaceB {
public void methodC();
}
interfaceC를 구현할 클래스는 methodA(), methodB(), methodC()를 구현해야합니다. 즉 인터페이스를 상속한 인터페이스를 구현할 때에는 상속받은 모든 부모 인터페이스의 메서드를 구현해야 한다는 것!!
'JAVA' 카테고리의 다른 글
[JAVA] 래퍼 클래스(Wrapper Class)란? (0) | 2024.05.31 |
---|---|
[JAVA] ENUM 이란? (0) | 2024.05.28 |
[JAVA] JVM(Java Virtual Machine) (0) | 2023.07.11 |
[JAVA] String이 불변(immutable)인 이유? (0) | 2023.04.11 |
[JAVA]String, StringBuilder, StringBuffer (0) | 2023.04.08 |