2014년 5월 22일 목요일

Java8 Default Method

Java 8에서 추가된 기능 중 Interface에 default 선언으로 메서드를 만들 수 있게 되었다. 마치 Abstract class 처럼 사용되지만 Interface이기 때문에 다중 상속이 가능하게 되었다.


작성된 메서드에 ‘default’선언을 해준다. 먼저 Eclipse에서 Java8을 쓰기위해서는 ‘Kepler Service Release 2’을 설치하고, “Help > Eclipse Marketplace…” 메뉴에서 ‘Java 8 support for Eclipse Kepler SR2’을 검색하여 설치해야 합니다.

NamedPerson을 상속받는 Student, Contact을 만들고 그중 Student에서는 ‘fullName’메서드를 Override 합니다. 이렇게 만들어진 클래스를 테스트 해보면.

Override하지 않은 경우, 인터페이스에 정의된 Default 메서드가 동작 함을 볼 수 있습니다. 하지만 다중 상속으로 중복된 Default 메서드가 있는 경우를 테스트 해보면

NamedPerson과 동일한 AddressBookEntry을 만들어 Student와 Contact에서 상속받게 합니다.
Student의 경우에는 중복되는 “fullName”메서드가 Override되어 있기 때문에 문제가 없지만, Contact의 경우

“Duplicate default methods named fullName with the parameters () and () are inherited from the types AddressBookEntry and NamedPerson” 처럼 default 메서드가 중복되어 있다는 컴파일 오류가 발생합니다. 이런 경우에는 필히 중복된 Default 메서드를 Override 해서 해결해야 합니다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...