목록2024/11 (3)
개발 기록
# 멤버 클래스는 되도록 static으로 만들어라 중첩 클래스 : 다른 클래스 안에 정의된 클래스중첩 클래스는 자신을 감싼 바깥 클래스에서만 쓰여야한다. 그 외의 쓰임새가 있다면 톱레벨 클래스로 만들어야한다.종류정적 멤버 클래스(비정적) 멤버 클래스익명 클래스지역 클래스1. 정적 멤버 클래스- 다른 클래스 안에 선언되고, 바깥 클래스의 private 멤버 에도 접근할 수 있음 (일반 클래스와의 차이점)- 일반 클래스처럼 독립적으로 동작할 수 있으며, 바깥 클래스의 인스턴스 없이도 생성 가능.- 멤버 클래스에서 바깥 인스턴스에 접근할 일이 없다면 무조건 static을 붙여서 정적 멤버 클래스로 만들자.public class OuterClass { // private 멤버 private final..
## 21 인터페이스는 구현하는 쪽을 생각해 설계하라 ### 기존 인터페이스에 디폴트 메서드 구현을 추가하는 것은 위험한 일이다.1. 디폴트 메서드는 구현 클래스에 대해 아무것도 모른 채 합의 없이 무작정 '삽입' 될 뿐이다. - 디폴트 메서드 : 인터페이스에 있는 구현 메서드 (메서드 앞에 default 예약어. 구현부 {} 가 있다.)- - 기본 메서드는 이미 구현되어 있기 때문에 호출하여 사용할 수 있다.public interface MyInterface { // 추상 메서드 void abstractMethod(); // 기본 메서드 default void defaultMethod() { // 기본 구현 코드 System.out.println("This..
(18) 상속보다는 컴포지션을 사용하라 - 여기서 말하는 상속은 인터페이스 상속이 아닌 (클래스가 다른 클래스를 확장하는) 구현 상속을 말함- 구현 상속 (서브클래싱): 코드를 재사용하기 위해 부모 클래스를 상속받는 것.부모 클래스의 기능을 그대로 물려받아 재사용하거나, 필요한 부분만 수정하여 사용하는 방식- 인터페이스 상속 (서브타이핑): 다형성을 위해 부모 클래스와 자식 클래스가 동일한 인터페이스를 공유하도록 하는 것.부모 클래스에서 정의된 메서드를 자식 클래스가 반드시 구현 ### 상속의 문제점1. 캡슐화를 해친다.- 상위 클래스의 구현이 바뀌면 하위 클래스의 동작에 이상이 생길수 있다.- self-use 패턴 ( 한 메소드가 같은 클래스 내의 다른 메서드를 사용하는 패턴 ) 사용시,- 상위 ..