Interface
π μΈν°νμ΄μ€
μΈν°νμ΄μ€λ?
π₯ μΆμ λ©μλμ μ§ν© π₯
- ꡬνλ κ²μ΄ μ μλ μ€κ³λ. (κ»λ°κΈ°-λͺ¨λ λ©€λ²κ° public)
μΈν°νμ΄μ€λ κ°λ° μ½λμ κ°μ²΄κ° μλ‘ ν΅μ νλ μ μ μν μ νλ€.
κ°λ° μ½λκ° μΈν°νμ΄μ€μ λ©μλλ₯Ό νΈμΆνλ©΄ μΈν°νμ΄μ€ κ°μ²΄μ λ©μλλ₯Ό νΈμΆμν¨λ€.
κ·Έλ κΈ° λλ¬Έμ κ°λ° μ½λλ κ°μ²΄μ λ΄λΆ ꡬ쑰λ₯Ό μ νμκ° μκ³ μΈν°νμ΄μ€μ λ©μλλ§
μκ³ μμΌλ©΄ λλ€.
μ€κ°μ μΈν°νμ΄μ€λ₯Ό λλ μ΄μ λ κ°λ° μ½λλ₯Ό μμ νμ§ μκ³ μ¬μ©νλ κ°μ²΄λ₯Ό λ³κ²°ν μ
μλλ‘ νκΈ° μν΄μλ€.
π μκ³ λμ΄κ°κΈ° π
μΆμ ν΄λμ€μ μΈν°νμ΄μ€μ μ°¨μ΄μ μ Interface Variablμ κ°μ§μ μλ μλμ΄λ€.
μΈν°νμ΄μ€ μ μΈ
public interface TestInterface {
}
public interface TestInterface {
// μμ νλ; public static μλ΅κ°λ₯
public int MAX_VOLUME = 10; //= public static final int MAX_VOLUME = 10;
// μΆμ λ©μλ; public static μλ΅κ°λ₯
String getNumber(); //= public static String getNumber();
}
μΆμ λ©μλ μ μΈ
μΈν°νμ΄μ€λ₯Ό ν΅ν΄ νΈμΆλ λ©μλλ μ΅μ’ μ μΌλ‘ κ°μ²΄μμ μ€νλλ€.
λ°λΌμ μΈν°νμ΄μ€μ λ©μλλ μ€ν λΈλ‘μ΄ νμ μλ μΆμ λ©μλλ‘
μ μΈνλ€. μΆμ λ©μλλ λ¦¬ν΄ νμ , λ©μλ μ΄λ¦, λ§€κ° λ³μλ§ κΈ°μ λκ³
μ€κ΄νΈλ₯Ό λΆμ΄μ§ μλ λ©μλλ₯Ό λ§νλ€.
public abstract void method();
// λ§€κ° κ° νμν κ²½μ°
public abstract void method2(int num);
μ κ·Ό μ ν
μΈν°νμ΄μ€μ λͺ¨λ λ©μλλ κΈ°λ³Έμ μΌλ‘ public μ κ·Ό μ νμ κ°λλ€.
π μΈν°νμ΄μ€ μμ
μΈν°νμ΄μ€μ μ‘°μμ μΈν°νμ΄μ€λ§ κ°λ₯νλ€.
λ€μ€ μμμ΄ κ°λ₯νλ€. μλλ©΄ μΆμλ©μλλ μΆ©λν΄λ λ¬Έμ μκΈ° λλ¬Έ.
public interface TestClass extends Interface1, Interface2 {}
π μΈν°νμ΄μ€ ꡬν
μΈν°νμ΄μ€ ꡬν
π₯ μΈν°νμ΄μ€μ μ μλ μΆμλ©μλλ₯Ό μμ±νλ κ² π₯
π‘ ν·κ°λ¦¬μ§ λ§κΈ° : μΆμ ν΄λμ€λ μμ(extends)λ₯Ό ν΅ν΄μ ꡬννλ€.
κ°λ° μ½λκ° μΈν°νμ΄μ€ λ©μλλ₯Ό νΈμΆνλ©΄ μΈν°νμ΄μ€λ κ°μ²΄μ λ©μλλ₯Ό νΈμΆνλ€.
μ¬κΈ°μ κ°μ²΄λ₯Ό μΈν°νμ΄μ€μ ꡬν(implement) κ°μ²΄ λΌκ³ νκ³ , ꡬν κ°μ²΄λ₯Ό μμ±νλ
ν΄λμ€λ₯Ό ꡬν ν΄λμ€λΌκ³ νλ€.
ꡬν ν΄λμ€
ꡬν ν΄λμ€λ 보ν΅μ ν΄λμ€μ λμΌνλ°, μΈν°νμ΄μ€ νμ μΌλ‘ μ¬μ©ν μ μμμ
μλ €μ£ΌκΈ° μν΄μ ν΄λμ€ μ μΈλΆμ implements
ν€μλλ₯Ό μΆκ°νλ€.
public class ꡬνν΄λμ€μ΄λ¦ implements μΈν°νμ΄μ€μ΄λ¦ {
// μΈν°νμ΄μ€μ μ μΈλ μΆμ λ©μλμ μ€μ²΄ λ©μλ μ μΈ
}
ꡬν κ°μ²΄
μΈν°νμ΄μ€λ‘ ꡬν κ°μ²΄λ₯Ό μ¬μ©νλ¬λ©΄, μ°μ μΈν°νμ΄μ€ λ³μλ₯Ό μ μΈνκ³
ꡬν κ°μ²΄λ₯Ό λμ ν΄μΌ νλ€. μΈν°νμ΄μ€ λ³μλ μ°Έμ‘° νμ μ΄κΈ° λλ¬Έμ ꡬνκ°μ²΄κ°
λμ λ κ²½μ° κ΅¬ν κ°μ²΄μ λ²μ§λ₯Ό μ μ₯νλ€.
public class RemoteControllerSample {
public static void main(Strin[] args) {
// 1. μΈν°νμ΄μ€ λ³μ μ μΈ
RemoteController rc;
// 2. λ³μ = ꡬνκ°μ²΄;
rc = new Television();
rc = new Audio();
// 1,2 λ²μ ν λ²μ
// μΈν°νμ΄μ€ λ³μ = ꡬνκ°μ²΄;
// RemoteController rc = new Television();
}
}
λ€μ€ μΈν°νμ΄μ€ ꡬν ν΄λμ€
public class ꡬνν΄λμ€μ΄λ¦ implements μΈν°νμ΄μ€A, μΈν°νμ΄μ€B {
}
π μΈν°νμ΄μ€ μ¬μ©
ν΄λμ€λ₯Ό μ μΈν λ μΈν°νμ΄μ€λ (νλ, μμ±μ λλ λ©μλ)μ 맀κ°λ³μ,
(μμ±μ λλ λ©μλ)μ λ‘컬 λ³μλ‘ μ μΈλ μ μλ€.