728x90
반응형
인터페이스 default & static
만약 interface에 추상메서드를 추가하면 다른 interface의 메서드를 쓰는 클래스에 추가된 추상메서드를 전부 선언해야하는 불편함이 있다.
- 따라서 default값을 넣고 {} 중괄호를 붙여 선언하면 원하는 클래스에만 그 추상메서드를 선언할 수 있다
- 중괄호를 선언해서 몸통을 만들었기 때문에 생기는 문제점 2가지
- 여러 인터페이스 디폴트 메서드간의 충돌
- 이 경우 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야한다.
- 디폴트 메서드와 조상 클래스 메서드간의 충돌
- 이 경우 조상 클래스의 메서드가 상속되고 디폴트 메서드는 무시된다.
- 여러 인터페이스 디폴트 메서드간의 충돌
- 중괄호를 선언해서 몸통을 만들었기 때문에 생기는 문제점 2가지
class methodtest implements iftest{
public void method() {
}
}
class methodtest2 implements iftest{
public void method() {
}
public void methodnew() {
// default로 값을 주었기 때문에 위의 methodtest 클래스는 메서드 선언 생략가능함
}
}
interface iftest{
void method();
default void methodnew() {};
}
728x90
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바의 정석 8장 (20일차) - 프로그램 오류 (0) | 2022.02.09 |
---|---|
자바의 정석 7장 (19일차) - 7장 연습문제 (객체지향 2) (0) | 2022.02.08 |
자바의 정석 7장 (17일차) - 인터페이스를 이용한 다형성 및 장점 (0) | 2022.02.04 |
자바의 정석 7장 (16일차) - 인터페이스 (0) | 2022.02.02 |
자바의 정석 7장 (16일차) - 추상클래스 abstract class (0) | 2022.02.02 |