๋ฐ์ํ
์ธํฐํ์ด์ค์ default method
์ธํฐํ์ด์ค์ default ๋ฉ์๋
JAVA 8์ด ๋ฑ์ฅํ๋ฉด์ interface์ ๋ํ ์ ์๊ฐ ๋ช ๊ฐ์ง ๋ณ๊ฒฝ๋์๋ค.
default๋ฉ์๋
- ์ธํฐํ์ด์ค๊ฐ defaultํค์๋๋ก ์ ์ธ๋๋ฉด ๋ฉ์๋๊ฐ ๊ตฌํ๋ ์ ์๋ค. ๋ํ ์ด๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ default๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ ์ ์๋ค.
public interface Calculator {
public int plus(int i, int j);
public int multiple(int i, int j);
default int exec(int i, int j){ //default๋ก ์ ์ธํจ์ผ๋ก ๋ฉ์๋๋ฅผ ๊ตฌํํ ์ ์๋ค.
return i + j;
}
}
//Calculator์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ MyCalculatorํด๋์ค
public class MyCalculator implements Calculator {
@Override
public int plus(int i, int j) {
return i + j;
}
@Override
public int multiple(int i, int j) {
return i * j;
}
}
public class MyCalculatorExam {
public static void main(String[] args){
Calculator cal = new MyCalculator();
int value = cal.exec(5, 10);
System.out.println(value);
}
}
- ์ธํฐํ์ด์ค๊ฐ ๋ณ๊ฒฝ์ด ๋๋ฉด, ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ชจ๋ ํด๋์ค๋ค์ด ํด๋น ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ฅผ ๊ตฌํํด ๋์ ์ ์๋๋ก ํ์๋ค.
static๋ฉ์๋
public interface Calculator {
public int plus(int i, int j);
public int multiple(int i, int j);
default int exec(int i, int j){
return i + j;
}
public static int exec2(int i, int j){ //static ๋ฉ์๋
return i * j;
}
}
//์ธํฐํ์ด์ค์์ ์ ์ํ static๋ฉ์๋๋ ๋ฐ๋์ ์ธํฐํ์ด์ค๋ช
.๋ฉ์๋ ํ์์ผ๋ก ํธ์ถํด์ผํ๋ค.
public class MyCalculatorExam {
public static void main(String[] args){
Calculator cal = new MyCalculator();
int value = cal.exec(5, 10);
System.out.println(value);
int value2 = Calculator.exec2(5, 10); //static๋ฉ์๋ ํธ์ถ
System.out.println(value2);
}
}
- ์ธํฐํ์ด์ค์ static ๋ฉ์๋๋ฅผ ์ ์ธํจ์ผ๋ก์จ, ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋จํ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ ์ ํธ๋ฆฌํฐ์ฑ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋์๋ค.
[ ์ถ์ฒ ] : https://programmers.co.kr/learn/courses/5/lessons/241
๋ฐ์ํ