μΈν°νμ΄μ€(Interface)λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μΆμνλ₯Ό μν μ€μν κ°λ μ€ νλμ λλ€. μ£Όλ‘ μΆμ λ©μλμ μμ(static final λ³μ)λ₯Ό μ μνλ©°, λ€λ₯Έ ν΄λμ€μμ ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬν(Implement)νμ¬ μ¬μ©ν©λλ€.
μΈν°νμ΄μ€μ νΉμ§
1) μΆμ λ©μλμ μ§ν©
μΈν°νμ΄μ€λ μΆμ λ©μλ(λ³Έμ²΄κ° μλ λ©μλ)λ₯Ό μ μν μ μμ΅λλ€. μ΄ λ©μλλ ꡬνμ΄ μκ³ , ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€μμ ꡬνν΄μΌ ν©λλ€.
2) ꡬν(Implement)
μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€λ implements ν€μλλ₯Ό μ¬μ©ν©λλ€. ν΄λμ€μμλ μΈν°νμ΄μ€μμ μ μν λͺ¨λ μΆμ λ©μλλ₯Ό ꡬνν΄μΌ ν©λλ€. μ¬λ¬ μΈν°νμ΄μ€λ₯Ό λμμ ꡬνν μ μμ΅λλ€.
3) λ€μ€ μμ(Multiple Inheritance)
μΈν°νμ΄μ€λ ν΄λμ€μ λ¬λ¦¬ μ¬λ¬ κ°μ μΈν°νμ΄μ€λ‘λΆν° μμλ°μ μ μμ΅λλ€. ν΄λμ€λ νλμ ν΄λμ€λ§μ μμλ°μ μ μμ§λ§, μΈν°νμ΄μ€λ μ¬λ¬ κ°λ₯Ό λμμ μμλ°μ μ μμ΅λλ€.
4) Always constant variable in interface start public static final and method start public
μΈν°νμ΄μ€μμ μ μλ μμ(static final λ³μ)λ κΈ°λ³Έμ μΌλ‘ public static finalλ‘ μμνλ©°, λ©μλλ publicμΌλ‘ μμν©λλ€. μΈν°νμ΄μ€λ κΈ°λ³Έμ μΌλ‘ μΈλΆμμ μ κ·Όμ΄ κ°λ₯νλλ‘ μ€κ³λμ΄ μμ΅λλ€.
5) From JDK 1.8, constant variable and default method have added
JDK 1.8λΆν°λ μΈν°νμ΄μ€μμ μμ(static final λ³μ)μ λν΄νΈ λ©μλ(default method)λ₯Ό μ μν μ μκ² λμμ΅λλ€. μ΄λ‘μ¨ μΈν°νμ΄μ€μμλ λ©μλμ κΈ°λ³Έ ꡬνμ μ 곡νκ±°λ μμλ₯Ό μ μΈν μ μκ² λμμ΅λλ€.
- μ μ λ©μλ(Static Method): μ μ λ©μλλ μΈν°νμ΄μ€μμ μ μν μ μμ΅λλ€. μ΄ λ©μλλ μΈν°νμ΄μ€μ μΈμ€ν΄μ€ μμ΄ νΈμΆλ©λλ€.
μΈν°νμ΄μ€μ μ₯μ
1. μ μΈ(κ»λ°κΈ°,μΈν°νμ΄μ€)κ³Ό ꡬν(μλ§Ήμ΄) λΆλ¦¬ κ°λ₯
public class Interface02 {
public static void main(String[] args) {
A a = new A();
a.method(new C()); // κ°μκΈ° Bν΄λμ€κ° μ¬μ©νκ³ μΆλ€? μκ°λ₯
}
}
// μΈν°νμ΄μ€ μ₯μ 1: μ μΈ(κ»λ°κΈ°,μΈν°νμ΄μ€)κ³Ό ꡬν(μλ§Ήμ΄) λΆλ¦¬ κ°λ₯
class A {
public void method(I i) { // μΈν°νμ΄μ€ I ꡬνν λλ§ λλ¬μλΌ!!
i.method();
}
}
interface I {
public void method();
}
class B implements I {
public void method() {
System.out.println("B ν΄λμ€μ λ©μλ");
}
}
class C implements I {
public void method() {
System.out.println("C ν΄λμ€μ λ©μλ");
}
}
2. μλ‘ λ¬Άμ΄μ£Όκ³ μΆμ ν΄λμ€λ€μ κ΄κ±λ₯Ό λ§Ίμ΄μ€ μ μλ€
μΈν°νμ΄μ€μμ μμμ λν΄νΈ λ©μλ(default method)λ₯Ό νμ©νκ² λ μ΄μ
μλ°μμ μΈν°νμ΄μ€μ λν΄νΈ λ©μλλ₯Ό λμ ν μ£Όλ μ΄μ λ κΈ°μ‘΄μ μΈν°νμ΄μ€μ μλ‘μ΄ κΈ°λ₯μ μΆκ°νκ±°λ μμ ν λ λ°μνλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν¨μ λλ€. μΈν°νμ΄μ€μ μλ‘μ΄ λ©μλλ₯Ό μΆκ°νλ©΄, ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬννλ λͺ¨λ ν΄λμ€μμ μλ‘μ΄ λ©μλλ₯Ό ꡬνν΄μΌ ν©λλ€. μ΄λ‘ μΈν΄ κΈ°μ‘΄μ κ°λ°λ μ½λλ€μ΄ μλ‘μ΄ μΈν°νμ΄μ€λ₯Ό ꡬννλλ‘ λ³κ²½λμ΄μΌ νλ λ¬Έμ κ° λ°μν©λλ€.
λν΄νΈ λ©μλλ μ΄λ¬ν λ¬Έμ λ₯Ό μννκ³ κΈ°μ‘΄ μ½λμ νμ νΈνμ±μ μ μ§ν μ μλλ‘ ν΄μ£Όλ κΈ°λ₯μ μ 곡ν©λλ€. μλ‘μ΄ λ©μλλ₯Ό μΆκ°ν λ κΈ°λ³Έμ μΈ κ΅¬νμ μ 곡ν μ μκΈ° λλ¬Έμ ν΄λΉ λ©μλλ₯Ό ꡬννμ§ μμλ λλ©°, μ΄λ‘ μΈν΄ κΈ°μ‘΄μ ν΄λμ€μμλ ν΄λΉ λ©μλλ₯Ό ꡬννμ§ μμλ μ»΄νμΌ μ€λ₯κ° λ°μνμ§ μμ΅λλ€.
λν΄νΈ λ©μλμ κ°λ₯μ± μλ λ¬Έμ μ
1. μ¬λ¬ μΈν°νμ΄μ€κ°μ λν΄νΈ λ©μλ μΆ©λ : μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μμ λν΄νΈ λ©μλ μ€λ²λΌμ΄λ©νλ€.
2. λν΄νΈ λ©μλμ μ‘°μ ν΄λμ€ λ©μλκ°μ μΆ©λ : μ‘°μ ν΄λμ€μ λ©μλκ° μμλκ³ , λν΄νΈ λ©μλλ 무μλλ€.
μΈν°νμ΄μ€μ μΆμν΄λμ€μ μ°¨μ΄μ
-→ μΈμ€ν΄μ€ λ³μ(IV), μΈμ€ν΄μ€ λ©μλ(IM), μμ±μ(Constructor)μ μ 무
- μΆμ ν΄λμ€λ μΈμ€ν΄μ€ λ³μ, μΈμ€ν΄μ€ λ©μλ, μμ±μλ₯Ό κ°μ§ μ μμ΅λλ€.
- μΈν°νμ΄μ€λ κΈ°λ³Έμ μΌλ‘ μΈμ€ν΄μ€ λ³μ, μΈμ€ν΄μ€ λ©μλ, μμ±μλ₯Ό κ°μ§ μ μμ΅λλ€. μΈν°νμ΄μ€μμλ μμμ μΆμ λ©μλλ§μ μ μν μ μμ΅λλ€.
An interface is a completely "abstract class" that is used to group related methods with empty bodies.
'Programming > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
21 Exception handling (0) | 2024.01.21 |
---|---|
20 Exceptions (0) | 2024.01.21 |
18 Polymorphism (0) | 2024.01.20 |
17 Abstraction (0) | 2024.01.20 |
16 Composition relationship (0) | 2024.01.20 |
λκΈ