default method
interface에서 내용이 있는 메소드
인터페이스는 원래 추상메소드 100퍼센트다
하지만 default 를 붙여줌으로 내용을 추가할수있다.
등장배경
상황 : 한 오픈소스의 인터페이스가 많이 사용되고있다.
해당 인터페이스에 메소드를 추가하고싶어졌다.
인터페이스 특성상 메소드가 추가되면
이 인터페이스를 구현하고 있는 모든 클래스에서는 해당 메소드를 구현해주어야한다.
-> 추가하지않으면 오류가 발생
해결 : 꼭 구현하지 않아도 되는 메소드를 넣자 - > default method
대신 디폴트 메소드는 추상이 아닌 무조건 내용이 있어야한다.
생각할점
그러면 abstract class와 무엇이 다른가?
여러 메소드들 중에 골라서 구현하는 것이 꼭 추상클래스같다..
클래스와 결정적으로 다른점은
자바는 클래스를 다중상속할수 없는것이고
인터페이스는 다중으로 구현이 가능하다!
+ 또 다른 차이 추가적인 점
Object 클래스의 equals와 hashcode는 디폴트 메소드사용
인스턴스 필드를 가질수 없다
public이 아닌 정적 맴버를 가질수 없다.
--> 이럴때 추상클래스를 "추상 골격 구현 클래스"로 만들어 인터페이스와 같이 사용한다.
인터페이스는 타입을 정의
메소드 구현은 추상 공격 구현 클래스에서 구현
--->템플릿 메소드 패턴
'language > 자바' 카테고리의 다른 글
[java] + 연산 순서 (0) | 2022.07.25 |
---|---|
[java] local variables , instance variables, class variables (지역변수, 인스턴스변수, 클래스변수) (0) | 2022.07.20 |
[java] abstract 추상화 (0) | 2022.07.14 |
[java] 상속에서 조심해야 하는 점 (0) | 2022.07.13 |
[java]static의 사용이유 (0) | 2022.07.11 |