객체는 상속가능object에서 final이 아닌 메서드(equals, hashcode, tostring, clone ,finalize)는 모두 재정의 가능함으로 규약을 맞춰서 작성해야함equals를 재정의 하지 않는것이 좋은 경우각 인스턴스가 본질적으로 고유하다값표현이
자바 지원타입 : 인터페이스, 클래스, 배열 기본타입어노테이션은 인터페이스 일종, 열거타입은 클래스 일종인터페이스, 클래스, 배열은 참조타입클래스 멤버는 필드 메서드 멤버 클래스, 멤버 인터페이스가 있음클래스는 생성자 별도로 정적 팩토리 메서드를 제공한다 장점이름을 갖
정보은닉, 캡슐화의 장점개발속도 증진 → 병렬 개발관리비용 낮춤 → 디버깅, 컴포넌트 파악 유리성능 최적화재사용성 증가→ 모든 클래스와 멤버의 접근성을 가능한 좁혀야 함클래스 멤버 접근 제한자private: 멤버를 선언한 톱레벨 클래스에서만 접근 가능package-pr
제네릭 클래스(제네릭 인터페이스) : 클래스와 인터페이스 선언에 타입 매개변수가 쓰이는 것을 말함ex) List 는 List라고 쓰기도 한다→ 이를 통틀어서 제네릭 타입이라고 한다제네릭의 매개변수화 타입 → List 원소의 타입이 String인 리스트를 뜻함제네릭 타입
열거 타입은 클래스이며, 상수 하나당 자신의 인스턴스를 하나씩 만들어 public static final 필드로 공개함열거타입은 final(밖에서 접근하는 생성자를 제공하지 않음으로) → 인스턴스는 딱 하나씩 밖에 존재하지 않음을 보장열거 타입 상수 각각을 특정 데이터
타입을 명시해야 코드가 더 명확할 때를 제외하고는 람다의 모든 매개변수 타입은 생략해라람다는 이름이 없고 문서화도 못함으로 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄이 많아지면 쓰지말아야 한다람다를 직렬화 하지 말아라익명 클래스는 타입의 인스턴스를 만들 떄만