[08] Default Method

MIIINยท2023๋…„ 6์›” 8์ผ
0

Modern Java

๋ชฉ๋ก ๋ณด๊ธฐ
8/8
post-thumbnail

๐Ÿ„ Default Method

Java SE 8์—์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
์ฒซ ๋ฒˆ์งธ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๋ถ€์— ์ •์ (static) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ๋‘ ๋ฒˆ์งธ๋Š” ๋””ํดํŠธ(default) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

default๋ผ๋Š” ์ƒˆ๋กœ์šด ํ‚ค์›Œ๋“œ๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ๋””ํดํŠธ ๋ฉ”์„œ๋“œ์ž„์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

-- List ์ธํ„ฐํŽ˜์ด์Šค์˜ Default Method : sort
default void sort(Comparator<? super E> c) {
	Object[] a = this.toArray();
	Arrays.sort(a, c);
	ListIterator<E> i = this.listIterator();
	Object[] var4 = a;
	int var5 = a.length;

	for(int var6 = 0; var6 < var5; ++var6) {
		Object e = var4[var6];
		i.next();
		i.set(e);
	}
}

๋””ํดํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž๋ฐ” API์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ๊ทธ๋Œ€๋กœ ์ƒ์†ํ•˜๋ฏ€๋กœ ์ธํ„ฐํŽ˜์ด์Šค์— ์ž์œ ๋กญ๊ฒŒ ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.


๐ŸŽฎ Default Method ํ™œ์šฉ

Optional Method

๊ผญ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฉ”์„œ๋“œ๋ฅผ Default Method๋กœ ๊ตฌํ˜„ํ•˜์—ฌ, ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, Iterator ์ธํ„ฐํŽ˜์ด์Šค์˜ remove ๋ฉ”์„œ๋“œ ๊ตฌํ˜„์„ ๋น„์–ด์žˆ๋Š” ์ƒํƒœ๋กœ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์ด๋ฅผ Default Method๋กœ ๊ตฌํ˜„ํ•ด ๋†“์„ ์ˆ˜ ์žˆ๋‹ค.

interface Iterator<T> {
	boolean hasNext();
	T next();
	default void remove() {
		throw new UnsupportedOperationException();
	}
}

Multiple Inheritance of Behavior

Default Method๋กœ ๊ธฐ์กด์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ๋™์ž‘ ๋‹ค์ค‘ ์ƒ์†์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ถ”์ƒ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜๋งŒ ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์ค‘ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ Default Method๋กœ ๋™์ž‘ ๋‹ค์ค‘ ์ƒ์†๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋‹ค์ค‘ ์ƒ์†์—์„œ์˜ ํ•ด์„ ๊ทœ์น™
1. Default Method๋ณด๋‹ค ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ Method๊ฐ€ ํ•ญ์ƒ ์šฐ์„ ์ด๋‹ค.
2. 1๋ฒˆ ๊ทœ์น™ ์ด์™ธ์˜ ์ƒํ™ฉ์—์„œ๋Š” Sub Interface๊ฐ€ ์šฐ์„ ์ด๋‹ค.
3. 2๋ฒˆ๊นŒ์ง€ ์ •ํ•ด์ง€์ง€ ์•Š์œผ๋ฉด, ์—ฌ๋Ÿฌ Interface๋ฅผ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ช…์‹์ ์œผ๋กœ Default Method๋ฅผ Overrideํ•˜๊ณ  ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค.


profile
๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€