728x90 Gayoung162 시험공부 보호되어 있는 글 입니다. 2022. 5. 8. item 24. 멤버 클래스는 되도록 static 으로 만든다. 중첩 클래스? - 다른 클래스 안에 정의된 클래스 - 자신을 감싼 바깥 클래스에서만 사용되어야 한다. (그렇지 않을 경우 톱레벨로 만들어라) 중첩 클래스의 종류 정적 멤버 클래스 다른 클래스 안에 선언되고, 바깥 클래스의 private 멤버에 접근 가능하다. 바깥 클래스와 함께 쓰일 때만 유용한 public 도우미 클래스로 쓰임 개념상 중첩 클래스의 인스턴스가 바깥 인스턴스와 독립적으로 존재할 수 있다면 정적 멤버 클래스로 만들어야 한다. 멤버 클래스에서 바깥 인스턴스에 접근할 일이 없다면 무조건 static을 붙여서 정적 멤버 클래스로 만들자. static을 생략하면 바깥 인스턴스로부터 숨은 외부 참조를 갖게된다. 해당 참조를 저장하려면 시간/공간이 소비되기도 하고, 가비지 컬렉션이 바깥 클래스 인스턴.. 2022. 5. 7. item 23. 태그 달린 클래스보다는 클래스 계층 구조를 활용하라 public class Figure { enum Shape {RECTANGLE, CIRCLE} // 태그 필드 - 현재 모양을 나타냄 final Shape shape; // 모양이 사각형일때만 사용 double length; double width; // 모양이 원형일때만 사용 double radius; // 원 생성자 Figure(Shape shape, double radius) { shape = Shape.CIRCLE; this.radius = radius; } //사각형 생성자 Figure(Shape shape, double length, double width) { shape = Shape.RECTANGLE; this.length = length; this.width = width; } //태그 .. 2022. 5. 7. item 22. 인터페이스는 타입을 정의하는 용도로만 사용하라 - 인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입이다. - 클래스가 인터페이스를 구현한다 => 자신이 인스턴스로부터 무엇을 할 수 있는지를 클라이언트에 얘기 해 주는 것. * 잘못 사용한 예 : 상수 인터페이스 // 절 대 따 라 하 지 마 // public interface PhysicalConstants { // 아보가드로 수 (1/몰) double AVOCADOS_NUMBER = 6.022_140_857e23; // 볼츠만 상수 (J/K) double BOLTZMANN_CONSTANT = 1.380_648_52e-23; // 전자 질량(kg) double ELECTRON_MASS = 9.109_383_56e-31; } - 클래스 내부에서 사용하는 상수는 외부 인터페이스가 아니라.. 2022. 5. 3. item 21. 인터페이스는 구현하는 쪽을 생각해 설계하라 Java 8 이후 디폴트 메서드를 사용할 수 있게 되었지만, 여전히 주의해야 할 점이 있다. 디폴트 메서드를 선언하면 해당 인터페이스를 구현한 후 디폴트 메서드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 사용된다. 기존 인터페이스에 메서드를 추가할 수 있게 되었지만 모든 기존 구현체들과 연동되리라는 보장은 없다. [ JAVA 8에서 Collection Interface에 추가된 removeIf 메서드 ] default boolean removeIf(Predicate 2022. 5. 3. item 20. 추상 클래스보다는 인터페이스를 우선하라 인터페이스와 추상 클래스 공통점 - 인스턴스로 생성이 불가능하다. - (자바 8부터) 인스턴스 메서드를 구현 형태로 제공할 수 있다. - 선언부만 있는 추상 메서드를 갖는다. 차이점 - 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다. (새로운 타입을 정의하는 데 제약 있음) - 인터페이스가 선언한 메서드를 모두 정의하고 일반 규약을 잘 지켰다면 다른 어떠한 클래스를 상속했든 같은 타입으로 취급된다. - 추상 클래스 : 단일 상속만 지원하기 때문에, 다중 클래스 상속이 불가능 // idol에 Entertainer을 추가로 상속 받고 싶어도 할 수 없음. public class Idol extends Singer { // ... } abstract class .. 2022. 5. 3. 이전 1 ··· 7 8 9 10 11 12 13 ··· 27 다음 728x90