인터페이스는 타입을 정의하는 용도로만 사용하라 - Effective Java[22]
🔗 인터페이스는 오직 이 용도로만 사용해야해 !!
🔗 인터페이스는 오직 이 용도로만 사용해야해 !!
🔗 디폴트 메소드 두둥 등장!!
🔗 인터페이스 (interface) , 추상 클래스 (abstract class)
🔗 상속을 고려한 설계와 문서화가 정확히 무슨 말이야?
상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다.
불변클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스다.
🔗 public 클래스에서의 public 필드를 통한 데이터 접근의 단점
어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐이다.
🔗 Comparable 인터페이스의 유일무이한 메서드 compareTo
Cloneable은 복제해도 되는 클래스임을 명시하는 용도의 믹스인 인터페이스(mixin interface)지만,
🔗 모든 하위 클래스에서 toString 메소드를 항상 재정의하라.
🔗 equals를 재정의한 클래스 모두에서 hashCode로 재정의해야 한다.
equals 메소드는 기본적으로 최상위 객체인 Object에서 제공하는 메소드로서 재정의를 염두에 두고 설계된 것이다. 때문에 재정의 시 지켜야 하는 일반 규약이 명확이 정의가 되어있다.
자바 라이브러리에는close 메소드를 호출해 직접 닫아줘야 하는 자원이 많다.
자바는 아래와 같이 두 가지 객체 소멸자를 제공한다.
자바는 메모리를 자동으로 관리해주는 가비지 컬렉터를 지원하는 언어이다.
똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을때가 많다.
많은 클래스가 하나 이상의 자원에 의존한다.
객체 지향적으로 사고하지 않는 이들이 종종 남용하는 경우가 있지만, 정적 메서드와 정적필드만을 담은 클래스는 나름의 쓰임새가 있다. 아래의 예시를 보자