Java
default, static, 다형성
옴악핫세
2023. 4. 5. 14:55
default 메서드
디폴트 메서드는 추상 메서드의 기본적인 구현을 제공하는 메서드임
- 메서드 앞에 default 키워드를 붙이며 블럭{ }이 존재해야합니다.
- default 메서드 역시 접근 제어자가 public 이며 생략이 가능합니다.
- 추상 메서드가 아니기 때문에 인터페이스의 구현체들에서 필수로 재정의 할 필요는 없습니다.
public class Main implements A {
@Override
public void a() {
System.out.println("A");
}
public static void main(String[] args) {
Main main = new Main();
main.a();
// 디폴트 메서드 재정의 없이 바로 사용가능합니다.
main.aa();
}
}
interface A {
void a();
default void aa() {
System.out.println("AA");
}
}
static 메서드
인터페이스에서 static 메서드 선언이 가능합니다.
- static의 특성 그대로 인터페이스의 static 메서드 또한 객체 없이 호출이 가능합니다.
- 선언하는 방법과 호출하는 방법은 클래스의 static 메서드와 동일합니다.
- 접근 제어자를 생략하면 컴파일러가 public을 추가해 줍니다
public class Main implements A {
@Override
public void a() {
System.out.println("A");
}
public static void main(String[] args) {
Main main = new Main();
main.a();
main.aa();
System.out.println();
// static 메서드 aaa() 호출
A.aaa();
}
}
interface A {
void a();
default void aa() {
System.out.println("AA");
}
static void aaa() {
System.out.println("static method");
}
}