자바의 정석 7장 (18일차) - 인터페이스 static & default

728x90
반응형

인터페이스 default & static

만약 interface에 추상메서드를 추가하면 다른 interface의 메서드를 쓰는 클래스에 추가된 추상메서드를 전부 선언해야하는 불편함이 있다.

  • 따라서 default값을 넣고 {} 중괄호를 붙여 선언하면 원하는 클래스에만 그 추상메서드를 선언할 수 있다
    • 중괄호를 선언해서 몸통을 만들었기 때문에 생기는 문제점 2가지
      1. 여러 인터페이스 디폴트 메서드간의 충돌
        • 이 경우 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야한다.
      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
반응형