목록Java/Java 8 (2)
SSinsa
Q1. 디폴트메서드는 하위 클래스에서 구현없이 인터페이스에 이미 구현된 것을 받아서 처리한다고 한다. 이때 "여러클래스가 해당 메서드를 받아서 처리한다면 중복의 문제는 어떻게 해결가능한가?" (준우) A1. 그 중복의 문제는 9장 맨 마지막에 설명되어있음. Q2. 다중상속(p298) 을 설명하는데 책에서는 "디폴트 메서드를 사용하지 않아도 다중상속을 활용할 수있다고" 나와있다. package java8.me; public class Main extends SuperMan implements Interface1,Interface2{ public static void main(String[] args) { Main main = new Main(); main.SuperClass(); main.A(); main..
API가 버전업이 되었을 때, setRelativeSize 메서드가 추가되고 사용되면, 어플리케이션 구동시 컴파일에러가 난다. 인터페이스에 새로운 메서드를 추가하면 바이너리 호환성은 유지됨. #바이너리 호환성 : 새로 추가된 메서드를 호출하지만 않으면 새로운 메서드 구현이 없이도 기존 클래스 파일 구현이 잘 동작한다는 의미 그러나 누군가 Resizable을 인수로 받는 Utils.paint에서 setRelativeSize를 사용하도록 코드를 바꿀 수 있다. 이때 setRelativeSize 메서드를 정의하지 않으므로 런타임 에러 발생 #문제점 정리 - 라이브러리를 관리하기가 복잠 - 사용자는 같은 코드에 예전버전과 새로운 버전 두 가지 라이브러리를 모두 사용해야함 ---> 해결책 : 디폴트 메서드 > c..