일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java #중첩반복문 #구구단
- java #자바 #상속 #오버라이딩
- java #조건문 #if조건문 #if
- 해쉬맵
- 믹스인
- Math.pow()
- java #객체지향 #자바
- java
- IntelliJ
- java #continue #반복문
- java #자바 #상속
- overring
- 스프링 #Spring #spring #입문서
- EffectiveJava
- java #조건문 #if문
- 자바 #java #상속
- Mixin
- Arrays.toString()
- 인텔리제이
- 람다
- Math.sqrt()
- 자바 #변수 #java
- java # for문 #반복문
- 메서드
- java #자료형
- 객체지향프로그램
- 자바
- 자바 #JAVA
- 이펙티브자바
- HashMap
- Today
- Total
목록Effective_Java (3)
산으로 가자▲
인터페이스와 default 메서드 "자바 8 이전에는 기존 구현체를 깨뜨리지 않고는 인터페이스에 메서드를 추가할 방법이 없었다. 인터페이스에 메서드를 추가하면 보통은 컴파일 오류가 나는데, 추가된 메서드가 우연히 기존 구현체에 이미 존재할 가능성이 아주 낮기 때문이다. 자바 8에 들어서 기존 인터페이스에 메서드를 추가할 수 있도록 default 메서드를 소개했지만, 위험이 완전히 사라진 것은 아니다." 갑자기 default 메서드를 소개하고, 갑자기 default 메서드를 사용하지 말라는 듯 이야기 한다. 책의 내용을 더 잘 이해하기 위해 우선 인터페이스와 default 메서드를 예시와 함께 간단히 알아보자. 인터페이스(interface) 인터페이스란 상수(static final)와 추상 메서드(abst..
자바의 다중 구현 매커니즘 : 인터페이스, 추상 클래스 자바 8부터는 인터페이스도 default 메서드를 제공할 수 있다. 인터페이스 vs 추상 클래스 공통점 선언 내용은 존재하지만 구현 내용은 없다(추상 메서드를 갖는다) 인스턴스로 생성할 수 없다. 목적 인터페이스 : 함수의 껍데기만 존재해서 구현을 강제한다. 구현 객체가 같은 동작을 하도록 보장한다. Has - A 추상 클래스: 추상 클래스를 상속 받아 기능을 이용하고 추가시킨다. Is - A 다중 상속 인터페이스 : 여러개의 인터페이스를 구현할 수 있다. 추상 클래스 : 여러 클래스를 상속 받을 수 없다. 책 본문 내용중 타입이라는 표현은 구현해야하는 메서드를 아울러 표현하는 것으로 이해했다. 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 ..
상속의 위험성 외부 클래스를 상속할 때의 위험성은 앞선 '상속보다 컴포지션을 사용하라'라는 게시글에서 다뤘다. 여기서 외부란 프로그래머 통제권 밖에 있어서 언제 어떻게 변경될지 모른다는 뜻이다. 예를 들어 Set, List같이 프로그래머가 직접 다루지 않는 클래스들을 말한다. 상속은 문서화를 요구한다. 메소드를 재정의하면 어떤 일이 일어나는지를 정확히 정리하여 문서로 남겨야한다. 즉, 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야한다. 상속용 클래스에서 재정의 가능한 메서드는 어떻게 동작하는지 문서화해야할 필요가 있다. 만약, 재정의 가능한 메서드가 내부의 다른 재정의 가능한 메서드를 호출해서 사용하는 상황이라면 기능이 오동작 할 수 있다. 재정의 가능한 메서드는..