Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 참조 계수
- ESG
- HTML
- 월칙
- colllection
- 과제의 분리
- Infresh
- try width resources
- 아웃풋법칙
- 수부타이
- 뉴 컨피던스
- try-with-resources
- 부자의그릇
- java
- kubernetes
- apache kafka
- 공헌감
- Container
- 이펙티브 자바
- 모두가 기다리는 사람
- CSS
- 레퍼런스 복사
- sentry
- node
- 쿠버네티스
- 도파민형 인간
- 비메모리 자원
- docker
- 히든 스토리
- 칭기즈칸의 위대한 장군 수부타이
Archives
- Today
- Total
Hi
Interface 본문
import org.junit.Test;
// 1. interface(행위) / abstract(상태)
// 2. interface 장점
// LinkedList<Integer> l = new LinkedList();
// List<Integer> l = new LinkedList();
// => 교체 가능한 유연한 설계
// 3. Abstract class 에도 구현을 제공할 수 있다.
// DIP: 클라이언트는 구체적인 타입보다는 인터페이스나 추상
// 클래스에 의존해야 한다.
// 4. 예외
// : 실패를 전달하는 방법
// 5. Interface
// 익명의 클래스
// => 함수 포인터
// => : 함수를 별도의 레퍼런스에 저장할 수 없다.
// => 함수를 일급 객체로 취급하지 않는다.
// Java 8 -> 메소드 레퍼런스
interface OnClickListener {
void onClick();
}
class Button {
private OnClickListener listener;
public void setOnClickListener(OnClickListener listener) {
this.listener = listener;
}
void click() {
if (listener != null)
listener.onClick();
}
}
// 개발
// 테스트 - 단위 테스트(Unit test)
public class Sample {
public void hoo() {
Button button = new Button();
// 이름없는 클래스
// => 인터페이스를 구현하는 이름 없는 클래스를 생성한다.
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick() {
}
});
}
@Test
public void foo() throws Exception {
String s = "";
for (int i = 0 ; i < 10000 ; ++i)
s += i;
}
@Test
public void foo2() throws Exception {
StringBuilder s = new StringBuilder();
for (int i = 0 ; i < 10000 ; ++i)
s.append(i);
}
}
'Programming > Java' 카테고리의 다른 글
enum (0) | 2018.04.09 |
---|---|
Input Output Stream (0) | 2018.04.09 |
functionalInterface (0) | 2018.04.09 |
Collection / Container (0) | 2018.04.04 |
Java, 객체(class)를 정렬할 수 있게 하려면 (0) | 2018.04.03 |