본문 바로가기
[Effective Java] 추상 클래스보다는 인터페이스를 사용하자. [Effective Java] 추상 클래스보다는 인터페이스를 사용하자. - 인터페이스(interface)와 추상클래스(abstract class)는 비슷하지만 다르다. 추상 클래스는 구현된 메소드를 포함할 수 있는 반면 인터페이스는 그렇지 못하다. 추상 클래스로 정의된 타입을 구현하는 클래스는 반드시 추상 클래스의 서브 클래스가 되어야 한다. 인터페이스를 구현하는 클래스의 경우 인터페이스에 정의된 모든 메소드를 구현하기만 하면 된다. 자바는 단일 상속만을 허용하므로 추상 클래스로 타입을 정의할 때 심한 제약이 따른다. - 인터페이스는 추상 클래스에 비해 변경과 적용이 쉽다. - 인터페이스는 믹스인(mixin)을 정의하는 데 이상적이다. 믹스인은 클래스가 자신의 본래 타입에 추가하여 구현할 수 있는 타입으.. 2016. 11. 7.
[Effective Java] clone 메소드는 신중하게 오버라이드 하자. [Effective Java] clone 메소드는 신중하게 오버라이드 하자. - Cloneable 인터페이스는 복제를 허용하는 객체라는 것을 알리는 목적으로 사용하는 믹스인 인터페이스( mixin interface ) 이다. 믹스인 인터페이스이기 때문에 자신이 clone method 를 가지고 있는 것도 아니다. Object 의 clone 은 Cloneable 을 implement 하지 않으면 사용할 수 없다. - Cloneable 을 implements 한 class 에 clone 을 호출하면, 해당 객체의 복제본을 만들어 반환한다. 복제 객체는 원본 객체와 같은 필드를 가지며 각 필드의 값도 복사된다. 하지만 reference 를 가진 녀석들은 deep copy 가 아닌 soft copy 를 수행한다.. 2016. 10. 10.
반응형