π»
Java νλ‘κ·Έλλ° - μΈν°νμ΄μ€(interface), μ κ·Όμ νμ(public, private, protected, default) λ³Έλ¬Έ
Java νλ‘κ·Έλλ° - μΈν°νμ΄μ€(interface), μ κ·Όμ νμ(public, private, protected, default)
λν¨λ 2020. 5. 8. 13:43μΈν°νμ΄μ€(interface)
: μΈν°νμ΄μ€λ? μΌμ’ μ μΆμν΄λμ€μ΄λ€. μΈν°νμ΄μ€λ μΆμν΄λμ€μ²λΌ μΆμλ©μλλ₯Ό κ°μ§λ§ μΆμν΄λμ€λ³΄λ€ μΆμν μ λκ° λμμ μΆμν΄λμ€μ λ¬λ¦¬ λͺΈν΅μ κ°μΆ μΌλ° λ©μλ λλ λ©€λ²λ³μλ₯Ό ꡬμ±μμΌλ‘ κ°μ§ μ μλ€. μ€μ§ μΆμλ©μλμ μμλ§μ λ©€λ²λ‘ κ°μ§ μ μμΌλ©°, κ·Έ μΈμ λ€λ₯Έ μ΄λ ν μμλ νμ©νμ§ μλλ€.
μΆμν΄λμ€λ₯Ό λΆλΆμ μΌλ‘λ§ μμ±λ 'λ―Έμμ± μ€κ³λ' λΌκ³ νλ€λ©΄, μΈν°νμ΄μ€λ ꡬνλ κ²μ μ무 κ²λ μκ³ λ°κ·Έλ¦Όλ§ κ·Έλ €μ Έ μλ 'κΈ°λ³Έ μ€κ³λ' λΌκ³ ν μ μλ€.
- μλ°μμ μΈν°νμ΄μ€λ κ°μ²΄μ μ¬μ© λ°©λ²μ μ μν νμ μ΄λ€.
- κ°μ²΄μ κ΅νμ±μ λμ¬μ£ΌκΈ° λλ¬Έμ λ€νμ±μ ꡬννλ μ€μν μν μ νλ€.
- (ν΄λμ€λ νλ, μμ±μ, λ©μλλ₯Ό κ΅¬μ± λ©€λ²λ‘ κ°μ§λλ°) μΈν°νμ΄μ€λ μμμ λ©μλλ§μ ꡬμ±λ©€λ²λ‘ κ°μ§λ€.
- νλμ κ°μ²΄κ° μλλΌ μ¬λ¬κ°μ²΄λ€κ³Ό μ¬μ©μ΄ κ°λ₯νλ―λ‘ μ΄λ€ κ°μ²΄λ₯Ό μ¬μ©νλλμ λ°λΌμ μ€νλ΄μ©κ³Ό λ¦¬ν΄ κ°μ΄ λ€λ₯Ό μ μλ€. λ°λΌμ κ°λ° μ½λ μΈ‘λ©΄μμλ μ½λ λ³κ²½ μμ΄ μ€ν λ΄μ©κ³Ό 리ν΄κ°μ λ€μνν μ μλ€λ μ₯μ μ κ°μ§κ² λλ€.
- μΈν°νμ΄μ€λ λ€μ€μμμ΄ κ°λ₯νλ€. (ν΄λμ€λ λ€μ€μμ λΆκ°λ₯)
- μΈν°νμ΄μ€μ μ₯μ
1) κ°λ° μκ° λ¨μΆνλ€.
2) νμ€νκ° κ°λ₯νλ€.
3) μλ‘ κ΄κ³μλ ν΄λμ€λ€μκ² κ΄κ³λ₯Ό λ§Ίμ΄μ€ μ μλ€.
4) λ 립μ μΈ νλ‘κ·Έλλ° κ°λ₯νλ€.
- μΈν°νμ΄μ€ μμ±
- μΈν°νμ΄μ€ μ μΈ
interface μΈν°νμ΄μ€λͺ {
...
//μμ
[public static final] νμ μμλͺ = κ°;
(->public static final μλ΅νλλΌλ μλμ μΌλ‘ μ»΄νμΌ κ³Όμ μμ λΆκ²λλ€.)
// μΆμλ©μλ
[public abstract] νμ λ©μλλͺ (맀κ°λ³μ, ...);
(->public absract μλ΅νλλΌλ μλμ μΌλ‘ μ»΄νμΌ κ³Όμ μμ λΆκ²λλ€.)
//λν΄λλ©μλ
[public] default νμ λ©μλλͺ (맀κ°λ³μ, ...){ ... }
(->public μλ΅νλλΌλ μλμ μΌλ‘ μ»΄νμΌ κ³Όμ μμ λΆκ²λλ€.)
//μ μ λ©μλ
[public] static νμ
λ©μλλͺ
(맀κ°λ³μ) { ... }
(->public μλ΅νλλΌλ μλμ μΌλ‘ μ»΄νμΌ κ³Όμ μμ λΆκ²λλ€.)
}
- λͺ¨λ λ©€λ²λ³μλ public static finalμ΄μ΄μΌνλ©°, μ΄λ₯Ό μλ΅ν μ μλ€.
- λͺ¨λ λ©μλλ public abstractμ΄μ΄μΌνλ©°, μ΄λ₯Ό μλ΅ν μ μλ€.
- μΈν°νμ΄μ€ ꡬν
public class ꡬνν΄λμ€λͺ implements μΈν°νμ΄μ€λͺ {
//μΈν°νμ΄μ€μ μ μΈλ μΆμ λ©μλμ μ€μ²΄ λ©μλ μ μΈ
}
-ν΄λμ€μμ ν΄λμ€ μμλ°μ λ -> extends
-μΈν°νμ΄μ€μμ μΈν°νμ΄μ€λ₯Ό μμλ°μ λ -> extends
-ν΄λμ€μμ μΈν°νμ΄μ€λ₯Ό μμλ°μ λ -> implements
-μΈν°νμ΄μ€μμ ν΄λμ€λ₯Ό μμλ°μ λ -> (X) μ΄λ°κ²½μ°λ μλ€.
μΈν°νμ΄μ€μμ μΆμν¨μλ₯Ό λ§λ€μ΄μ μμ λ‘κ² μ°κ³ , λ©€λ²λ³μλ₯Ό μ°λ κ²½μ°λ κ±°μμλ€. (static finalλ‘ μ μΈλ λ³μλ μΉνμ΄ μλκΈ° λλ¬Έ)
μμ 1)
/**
* @Author : κΉμν
* @Date : 2020. 5. 8.
* @Description : μ€λ§νΈν°μ λͺ¨λΈ μ€νμ λ€μκ³Ό κ°λ€.
* @Description : μ€λ§νΈν°μ λͺ¨λΈ μ€νμ λ€μκ³Ό κ°λ€.
* μ νλͺ
μ νμ‘μμ 3G/LTE/5G TV리λͺ¨μ»¨κΈ°λ₯
* Lphone κ°λ₯ 3G νμ¬
* Sphone κ°λ₯ LTE νμ¬
* Iphone κ°λ₯ 5G λ―Ένμ¬
*/
μΈν°νμ΄μ€λ λ€μ€μμμ΄ κ°λ₯νλ€.
- μ΅λͺ ꡬν κ°μ²΄
ꡬν ν΄λμ€λ₯Ό λ§λ€μ΄ μ¬μ©νλ κ²μ΄ μΌλ°μ μ΄κ³ , ν΄λμ€λ₯Ό μ¬μ¬μ©ν μ μκΈ° λλ¬Έμ νΈλ¦¬νμ§λ§, μΌνμ±μ ꡬν κ°μ²΄λ₯Ό λ§λ€κΈ° μν΄ μμ€ νμΌμ λ§λ€κ³ ν΄λμ€λ₯Ό μ μΈνλ κ²μ λΉν¨μ¨μ μ΄λ€. μ‘μμμλ μμ€ νμΌμ λ§λ€μ§ μκ³ λ ꡬν κ°μ²΄λ₯Ό λ§λ€ μ μλ λ°©λ²μ μ 곡νλλ°, κ·Έκ²μ΄ μ΅λͺ ꡬν κ°μ²΄μ΄λ€.
μμ± μ μ£Όμν μ μ νλμ μ€νλ¬Έμ΄λ―λ‘ λμλ μΈλ―Έμ½λ‘ (;)μ λ°λμ λΆμ¬μΌνλ€.
μΈν°νμ΄μ€ λ³μ = new μΈν°νμ΄μ€(){
//μΈν°νμ΄μ€μ μ μΈλ μΆμ λ©μλμ μ€μ²΄ λ©μλ μ μΈ
};
μ κ·Όμ νμ
- public => λ€ κ°λ₯νλ€.
- private => λ€ λΆκ°λ₯νλ€.
- protected => μμν΄μ μ¬μ©ν μ μλ€.
- default => ν¨ν€μ§κ° κ°μ κ²½μ°μ μμ λ‘κ² μΈ μ μλ€.
μ κ·Ό μ§μ μ | μ κ·Ό λ²μ | λμΌ ν΄λμ€ | λμΌ ν¨ν€μ§ | λ€λ₯Έ ν¨ν€μ§μ μμν΄λμ€ | λ€λ₯Έ ν¨ν€μ§ |
public | μ κ·Ό μ ν μμ | O | O | O | O |
protected | λμΌ ν¨ν€μ§μ μμ λ°μ ν΄λμ€ λ΄λΆ | O | O | O | |
default | λμΌ ν¨ν€μ§ λ΄μμλ§ | O | O | ||
private | λμΌ ν΄λμ€ λ΄μμλ§ | O |
- μ κ·Ό μ νμλ₯Ό μ¬μ©νλ μ΄μ ?
1) μΈλΆλ‘λΆν° λ°μ΄ν°λ₯Ό 보νΈνκΈ° μν΄μ
2) μΈλΆμλ λΆνμν, λ΄λΆμ μΌλ‘ μ¬μ©λλ λΆλΆμ κ°μΆκΈ° μν΄μ
=> privateλ₯Ό μ¬μ©νλ μ΄μ (μΊ‘μν)