Hi

Interface 본문

Programming/Java

Interface

SharingWorld 2018. 4. 9. 15:17
스택을 만들어보자
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