전체 글41 [이펙티브자바] ~149p item 21~24 아이템 21 - 인터페이스는 구현하는 쪽을 생각해 설계하라. -> 기존에는 기존 구현체를 깨뜨리지 않고 인터페이스에 새로운 메서드를 추가할 방법이 없었다. (이미 해당 인터페이스가 클라이언트 쪽에서 구현되어 있을 때 해당 인터페이스를 구현하고 있는 클래스에서 모두 다시 구현을 해주어야 했다. ) -> 하지만 자바 8버전에서는 인터페이스에 '디폴트 메서드' 라는 것을 구현할 수 있게 되었다. -> 디폴트 메서드는 인터페이스에 선언해도 해당 인터페이스를 구현한 클래스에서 필수적으로 구현해야 하는 내용은 아니다. 그렇기에 새로운 메서드를 추가할 때 상당한 유연성을 제공한다. -> 하지만, 이미 배포된 라이브러리 인터페이스에 디폴트 메서드를 추가할 때에는 기존 구현체에 따라 런타임 오류를 발생시킬 수 있다. 그.. 2020. 10. 19. [이펙티브자바] ~135p item 17~20 아이템 17 - 변경 가능성을 최소화하라 - 불변클래스 : 인스턴스의 내부 값을 수정할 수 없는 클래스 - 이 불변 클래스는 가변클래스보다 단순하고 설계 및 구현하기 쉬우며, 오류가 생길 여지가 적다. - 그래서 클래스는 꼭 필요한 경우가 아니라면 불변이어야 한다. - 불변으로 만들 수 없는 클래스라도 변경 가능한 부분을 최소한으로 줄인다. 아이템 18 - 상속보다는 컴포지션을 사용하라 [다시 읽기] - 상속은 코드를 재사용하게 해주는 좋은 수단이지만, 캡슐화를 해친다는 단점이 있다. - 상속은 상위 클래스와 하위 클래스가 순수한 is-a 관계일 때만 써야 한다. > is-a 관계 예시 자식클래스 is 부모클래스 성립하는 경우 ex) 코끼리(자식)는 동물(부모)이다. class 자식클래스 extends .. 2020. 10. 13. [프로그래머스] 자릿수 더하기 - 자바 문제는.. 여기에서 확인 programmers.co.kr/learn/courses/30/lessons/12931 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출 programmers.co.kr 입출력 예 > N answer 123 6 987 24 요지는 자연수 N 값이 주어졌을 때, 각 자리수의 합을 구해서 return 하라는 것이다. 나는 아래와 같이 풀었다. public int solution(int n) { int answer = 0; String [] strV.. 2020. 10. 13. [이펙티브자바] ~104p item 13~16 아이템 13 - clone의 재정의는 주의해서 진행하라 -> Cloneable 은 복제해도 되는 클래스임을 명시하는 용도의 인터페이스이나, 실제 복제 역할을 하는 메소드인 clone은 Cloneable이 아닌 Object 클래스에 선언되어 있어서 Cloneable만 구현한다고 해서 외부 객체에서 clone메소드를 호출 할 수는 없다. (리플렉션을 사용하면 가능할 수도 있으나, 100% 성공하지는 않는다고 함) -> 결론적으로 Cloneable은 문제가 꽤 많다. clone메소드를 사용해서 복제하는 방법보다는 복사생성자(변환생성자), 복사팩터리(변환팩터리) 를 사용하는 편이 더 좋은 경우가 많다. ex> 복사 생성자 public Burger(Burger burger) {... } ex> 복사 팩터리 pub.. 2020. 10. 12. 이전 1 2 3 4 5 6 7 8 ··· 11 다음