본문 바로가기

Language/Java

[Java] 디폴트 메소드(default method)

인터페이스에 메소드를 추가 할 때

 

기존에 해당 인터페이스를 구현한 클래스는 추가 할 메소드가 구현되어 있지 않으므로 오류가 뜨게 된다.

 

 

 

이 때 인터페이스 안에 default 키워드를 이용해 메소드를 구현해 놓으면

 

수정후에 인터페이스를 구현한 모든 클래스에서 해당 메소드를 사용 할 수 있고 오버라이딩 해서 사용 할 수도 있다.

 

예시

public interface MyService{
	public void myDuties();
}

를 구현 한 두 클래스

public class Developer implements MyService{
	public void myDuties(){
	}
}

public class Tester implements MyService{
	public void myDuties(){
	}
}

가 있을 때

 

 

public interface MyService{
	public void myDuties();
	public void extraDuties();
}

위의 코드처럼 extraDuties() 라는 메소드를 추가하게 되면 Developer와 Tester 클래스에 오류가 뜨게 된다.

 

 

public interface MyService{
	public void myDuties();
	default public void extraDuties();
}

위의 코드처럼 default를 붙여주게 되면 Developer와 Tester 클래스에 오버라이딩 하지 않아도 오류가 뜨지 않는다.

 

참조

www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaSE8DefaultMethods/JavaSE8DefaultMethods.html

'Language > Java' 카테고리의 다른 글

[Java] Collection Framework 소개  (0) 2020.12.14
[JAVA] 제네릭 클래스, 제네릭 메소드  (0) 2020.11.14
[JAVA]난수 발생(Math.Random())  (0) 2020.11.14
자바 파일 입 출력  (0) 2020.11.14
try-with-resources  (0) 2020.11.14