0. 핵심

    - 인터페이스 쓰는 이유
    - 컬렉션
    - Generic Type

1. 객체지향의 가장 기본

  • 가독성, 재사용
  • 유지보수 효율성

2. UML은 나무를 보기 위한 것이 아니고, 숲을 보기 위한 것. 즉, 구조를 보기 위한 것임

  • 가독성
  • Simple

3. 업무가 명확한 요구사항에서는 데이터 클래스부터 코딩, 그렇지 않은 경우에는 오퍼레이션부터 코딩!

4. abstract와 final의 차이

  • abstract는 재정의를 강제하기 위한 키워드. 상속(확장)을 유도한다.
  • final은 상속 금지를 강제하기 위한 키워드. 확장의 마지막이다라는 개념. 자의적으로 확장해서 처리하는 것을 막는다.

  • 멤버가 하나라도 추상메소드면 추상클래스여야 한다!

5. 디자인패턴 Adapter

  • 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다르 인터페이스로 변환한다.
    어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.
    (포함 관계를 이용하는 것 같다.)

7. 디자인패턴 iterator pattern

  • 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공한다.

8. Class부터 코딩해야한다는 습관을 버려라!

9. Interface, Abstract Class, Class의 차이

10. Interface는 여러 개 extends가 가능하다.

11. Java interface에서 변수는 항상 static final만 될까?

  • 변할 수 있는 상태를 가지지 않는 것이 인터페이스 이기 때문이다.

12. Java interface에서 메소드는 왜 public이어야 할까?

  • 표준 명세로 배포해야하는 메소드들이기 때문에 항상 열려있어야 한다.

13. 생성자안에서 명시하지 않을시, super()도 자동으로 컴파일러에 의해 추가된다.

14. Generic Type

  • Generics was added in Java 5 to provide compile-time type checking and removing risk of ClassCastException
  • type safety를 위해 Java에서 사용하는 기능.