Replies: 2 comments 2 replies
-
객체지향의 3가지 특성이라고 하면 캡슐화, 상속, 다형성을 보통 이야기 하는데요. |
Beta Was this translation helpful? Give feedback.
1 reply
-
|
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
아이템 52. 다중정의는 신중히 사용하라
다중정의에 의한 문제점 예시
문제점
다중정의 (overloading) 된 세 classify 중 어느 메서드를 호출할지가 컴파일타임에 정해지기 때문
직관과 결과가 어긋난 이유
재정의한 메서드는 동적으로 선택되고 다중정의한 메서드는 정적으로 선택되기 때문
가장 하위에서 정의한
메서드가 실행맨 위 코드의 문제를 해결한 예제
위 예제들로 본 다중정의 사용의 정리
결론은 헷갈릴 수 있는 코드는 작성하지 않는게 좋음
다중정의가 혼동을 일으키는 상황을 피하자!
다중정의가 혼란을 주는 상황을 어떻게 피하지?
안전하고 보수적으로 가려면 매개변수 수가 같은 다중정의는 만들지 말자!
다중정의하는 대신 메서드 이름을 다르게 지어주는 길이 있다!
생성자의 경우 다중정의를 피할 수 없음
생성자 다중정의의 안전 대책
근본적으로 다르다 (radically different)
면 헷갈릴 일이 없음자바의 버전업에 따른 문제
위 예시의 해결
Java 8에서 도입한 람다와 메서드 참조의 다중정의시 혼란
핵심은 다중정의된 메서드 (혹은 생성자)들이 함수형 인터페이스를 인수로 받을때 비록 서로 다른 함수형 인터페이스라도 인수 위치가 같으면 혼란이 생김
메서드를 다중정의할 때 서로 다른 함수형 인터페이스라도 같은 위치의 인수로 받아서는 안됨
근본적으로 다른 타입, 관련없는 타입
관련 없다 (unrelated)
고 함1. 어떤 방향으로도 형변환할 수 없는 타입 쌍이 있지만 이전의 예제 보다 복잡해지면 다중정의 메서드가 선택될지를 구분하기 어려워 질 것
2. 다중정의된 메서드 중 하나를 선택하는 규칙은 매우 복잡하며 자바가 버전업될수록 더 복잡해져 이것을 이해하는 프로그래머는 극히 드물 것
해당 아이템 주제를 어기고 싶은 경우
해당 아이템 주제를 어긴 케이스
정리
Beta Was this translation helpful? Give feedback.
All reactions