Java์์ ๊ธฐ์กด์ interface๋ ์ถ์ ๋ฉ์๋๋ง์ ๋ฉค๋ฒ๋ก ๊ฐ์ง ์ ์์๋ค. ๊ทธ๋ฐ๋ฐ Java8๋ถํฐ default ํค์๋๋ฅผ ์ฌ์ฉํด์ interface์ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์๊ฒ ๋์๋ค.
default ํค์๋
1
2
3
4
5
6
7
8
9
10
|
public interface ICalculator {
int add(int x, int y);
int sub(int x, int y);
default int mul(int x, int y) {
return x * y;
}
}
|
cs |
๋ฉ์๋๋ฅผ default ํค์๋๋ฅผ ์ฌ์ฉํด ์ ์ธํจ์ผ๋ก์จ ๋ฉ์๋์ body, ์ฆ ๊ตฌํ๋ถ๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์๋ค. ์ ์์๋ ์ธ ๊ฐ์ ๋ฉ์๋๋ฅผ ๋ฉค๋ฒ๋ก ๊ฐ๋ ICalculator interface์ด๋ฉฐ mul ๋ฉ์๋๊ฐ default ํค์๋๋ก ๊ตฌํํ ๋ฉ์๋์ด๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Calculator implements ICalculator {
@Override
public int add(int x, int y) {
return x + y;
}
@Override
public int sub(int x, int y) {
return x - y;
}
}
|
cs |
ํด๋น interface๋ฅผ ๊ตฌํํ๋ class์์๋, default ํค์๋๋ก ๊ตฌํํ์ง ์์ add, sub ๋ฉ์๋๋ง ๊ตฌํํ๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
1
2
3
4
5
6
7
8
9
|
public class CalcTest {
public static void main(String[] args) {
ICalculator cal = new Calculator();
int result = cal.mul(5, 3);
System.out.println("5 * 3 = " + result);
}
}
|
cs |
Calculator class์์ mul ๋ฉ์๋๋ฅผ ๊ตฌํํ์ง ์์์ง๋ง ICalculator interface์ default ํค์๋๋ก ๊ตฌํ์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ํธ์ถํด์ ์ฌ์ฉํ ์ ์๋ค.
โผ ์คํ ๊ฒฐ๊ณผ
1
2
3
|
5 * 3 = 15
Process finished with exit code 0
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Calculator implements ICalculator {
@Override
public int add(int x, int y) {
return x + y;
}
@Override
public int sub(int x, int y) {
return x - y;
}
@Override
public int mul(int x, int y) {
System.out.println(x + "์ " + y + "๋ฅผ ๊ณฑํฉ๋๋ค.");
return x * y;
}
}
|
cs |
๋ฌผ๋ก ํ์ ์, ์ด๋ ๊ฒ default ํค์๋๋ก ๊ตฌํ๋ ๋ฉ์๋๋ฅผ overriding ํ ์๋ ์๋ค.
โผ mul ๋ฉ์๋ overriding ํ ์คํ ๊ฒฐ๊ณผ
1
2
3
4
|
5์ 3๋ฅผ ๊ณฑํฉ๋๋ค.
5 * 3 = 15
Process finished with exit code 0
|
cs |
static ๋ฉ์๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public interface ICalculator {
int add(int x, int y);
int sub(int x, int y);
default int mul(int x, int y) {
return x * y;
}
static void print(int value) {
System.out.println(value);
}
}
|
cs |
๋ํ Java8๋ถํฐ interface์ static ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์๊ฒ ๋์๋ค. ์ ICalculator interface์ print ๋ฉ์๋๊ฐ ๊ทธ ์์ ํด๋นํ๋ค.
1
2
3
4
5
6
7
8
9
10
|
public class CalcTest {
public static void main(String[] args) {
ICalculator cal = new Calculator();
// Calculator.print(100);
ICalculator.print(100); // interface์ static ๋ฉ์๋๋ ๋ฐ๋์ interface๋ช
.๋ฉ์๋ ํ์์ผ๋ก ํธ์ถ
}
}
|
cs |
๋จ, static ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ฃผ์ํด์ผํ ์ ์ ๊ธฐ์กด ํด๋์ค์ static ๋ฉ์๋์ฒ๋ผ class์ด๋ฆ.๋ฉ์๋๋ก ํธ์ถํ๋๊ฒ ์๋๋ผ interface์ด๋ฆ.๋ฉ์๋๋ก ํธ์ถํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
โผ print ๋ฉ์๋ ์คํ ๊ฒฐ๊ณผ
1
2
3
|
100
Process finished with exit code 0
|
cs |
์ ๋ฆฌ
๊ธฐ์กด์ Java interface์์๋ abstract ๋ฉ์๋๋ง์ ๊ฐ์ง ์ ์์๋ ๋ฐ๋ฉด, Java 8 ์ดํ๋ถํฐ Java abstract, default, static ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์๊ฒ ๋์๋ค. (Java Documentation ์ฐธ๊ณ : Oracle Java Tutorials - Defining an Interface)
'Javaยท๏ปฟServletยท๏ปฟJSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ดํด๋ฆฝ์ค์์ ๊นํ๋ธ ์ ์ฅ์ ๋ณต์ ๋ฐ ํ๋ก์ ํธ ์ํฌํธํ๋ ๋ฐฉ๋ฒ (1) | 2020.02.01 |
---|---|
[JAVA] static import๋ฌธ (0) | 2020.01.29 |
[JAVA] ๋๋ค์(Lambda Expression) (0) | 2020.01.23 |
[JAVA] Array -> List, Set ๋ณํ ๋ฐฉ๋ฒ (0) | 2020.01.15 |
[JAVA] List ๊ฐ์ฒด ๋ณต์ฌ ๋ฐฉ๋ฒ๊ณผ Collections.copy()์ ๊ดํ ๊ณ ์ฐฐ (1) | 2020.01.09 |
๋๊ธ