티스토리 뷰

interface Aquatic{
	public default int getNumberOfGills(int input) { return 2; }
}
public class ClownFish implements Aquatic {
	public String getNumberOfGills() { return "4"; }
	public String getNumberOfGills(int input) { return "6"; }
	public static void main(String[] args) {
		System.out.println(new ClownFish().getNumberOfGills(-1));
	}
}

What is the output of the following code? (Choose all that apply)

A) The code will not compile because of line 6.
B) The code will not compile because of line 5.
C) 4
D) The code will not compile because of line 8.
E) 2
F) 6

 

해설:

이 코드는 6번째 줄이 Aquatic 인터페이스에 정의된 getNumberOfGills(int input) 메소드와 호환되지 않는 오버라이드이기 때문에 컴파일이 되지 않는다.  자세히 말하면, int는 String의 서브 클래스가 아니기 때문에 int와 String은 동일하지 않는 리턴 타입이다. 5째 라인은 이슈없이 컴파일 된다. 이유는 getNumberOfGills()는 int를 취하는 부모 인터페이스 메소드와 관계 없는 오버로드된 메소드 이기 때문이다. 

 

정답: A

'ocjap를 위한 자바 기초 > oca' 카테고리의 다른 글

[ocajp] 람다식 문제  (0) 2020.09.09
[ocjap] StringBuilder 문제  (0) 2020.07.22
[ocjap] 생성자 Constructor  (0) 2020.05.29
[ocajp] autoboxing, unboxing  (0) 2020.05.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함