1. μΆμν΄λμ€ (abstract class)
: μμ μ μ© ν΄λμ€ → public abstract class ν΄λμ€λͺ { }
: μμμ λͺ©μ μΌλ‘ νμ¬ λ§λ€μ΄μ§ ν΄λμ€λ‘ μ§μ μ μΈ μΈμ€ν΄μ€ μμ± λΆκ°λ₯
: μΆμ ν΄λμ€μ λ©μλλ λͺ λ Ήμ΄ μ‘΄μ¬νμ§ μλ(λΉμ΄μλ) λ©μλλ‘ λ―Έμμ± λ λ©μλ
→ μ¦, μ€λ²λΌμ΄λλ₯Ό κ°μ νκΈ°μν λ©μλ (μμ μ§μμ μν : κ°μ μ κ·μΉ μ 곡) - μμν΄λμ€λ 무쑰건 μ€λ²λΌμ΄λ
→ μ μΈ : μ κ·Όμ§μ μ abstract λ°νν λ©μλλͺ (νλΌλ―Έν°) { };
: μΆμν΄λμ€μ λͺ¨λ λ©μλκ° μΆμλ©μλμΈκ²μ μλλ€!
: λ€μ€μμ λΆκ°, λ¨μΌμμλ§ κ°λ₯
# μΆμν΄λμ€κ° νμν μ΄μ ?
1) λ¨μν 곡ν΅μ μΈ μμ±μ λ¬Άμ΄ μ½λμ μ€λ³΅μ μ΅μν, μμμ λͺ©μ λ§ μ§λ κ²½μ°
→ κ·Έλ¬λ μ΄ λͺ©μ μΈ κ²½μ° κΌ μΆμν΄λμ€λ‘ μ μΈνμ§ μμλ 무κ΄
2) ν΄λμ€ λ΄λΆμ μΆμ λ©μλκ° μ‘΄μ¬νλ κ²½μ° → λ°λμ μΆμν΄λμ€λ‘ μ μΈν΄μΌν¨
μ¦, μμ μ§μμμ μν μ νκΈ° μν ν΄λμ€! "μμλ°λ ν΄λμ€μΌ~ λ μ΄ λ©μλ κΌ λ§λ€μ΄μΌν΄(μ€λ²λΌμ΄λ)"
2. μΈν°νμ΄μ€ (Interface)
: κ°μ₯ μΆμμ κ°λ μ μλ£νμΌλ‘, μμνλ(Constant Field)μ μΆμλ©μλ(abstract Method)λ‘λ§ κ΅¬μ±λμ΄μμ
=> μΆμ λ©μλ μ μΈμ public abstractλ μλ΅κ°λ₯ : μλλ©΄ μ΄μ§νΌ μΆμλ©μλλ§ μ μΈν μ μκΈ°λλ¬Έμ!
: μΆμν΄λμ€μ λ§μ°¬κ°μ§λ‘ μμ μ§μμμ μν → μΆμλ©μλ = 무쑰건 μ€λ²λΌμ΄λ
: μ΄λ defaultλ©μλλ μ€λ²λΌμ΄λ νμκ° μλ(μμμ λλ©° μ€λ²λΌμ΄λλ κ°λ₯)
: λ¨μΌμμμ λ¬Έμ μ μ 보μνκΈ° μν κ²μΌλ‘, κ°λ λ§ μμλ°κΈ°λλ¬Έμ λ€μ€ μμ κ°λ₯
: μμν΄λμ€λ€μ κ²°ν©μ±μ΄ μ°μνμ¬ μμ€ν λ³κ²½μ μν₯ λ―ΈλΉ > μ μ§λ³΄μ ν¨μ¨μ± μ¦κ°
# μΈν°νμ΄μ€κ° νμν μ΄μ ?
1) λ¨μΌ μμμ λ¬Έμ μ 보μ : κ°λ λ§ μμλ°κΈ°λλ¬Έμ λ€μ€μμμ΄ κ°λ₯
=> μΈν°νμ΄μ€λ₯Ό μ΄μ©ν μμ : Realization
2) μμ μ§μμ : κ·μΉμ 곡
=> λμΌν ννμ ν΄λμ€λ§ λ§λ€μ΄μ§κ² ν¨
=> μμν΄λμ€ κ° κ²°ν©μ±μ΄ μ°μνμ¬ μμ€ν λ³κ²½μ λ€λ₯Έ ν΄λμ€λ‘ κ΅μ²΄λμ΄λ μν₯ λ―ΈλΉ
(μ μ§λ³΄μ ν¨μ¨μ± κ·Ήλν)
3. μΆμν΄λμ€μ μΈν°νμ΄μ€ μ°¨μ΄
μΆμν΄λμ€ | μΈν°νμ΄μ€ | |
λͺ©μ | μμ
μ§μμ μν (μ€λ²λΌμ΄λ κ°μ ) μμ λͺ©μ |
|
μΆμλ©μλνν | λͺ λ Ήμ΄ μ‘΄μ¬νμ§ μμ | λͺ λ Ήμ΄ μ‘΄μ¬ν΄λ λ¬΄κ΄ |
μμ κ°λ₯ κ°μ | λ¨μΌμμ | λ€μ€μμ |
4. μμ ν€μλ
5. λμ΄ν (Enum)
: μμνλ μ μΈμ΄ λͺ©μ μΈ Interfaceμ λ¬Έμ μ μ 보μνκΈ°μν μ°Έμ‘°ν
* μμνλμ μΈμ μν΄ λ§λ μΈν°νμ΄μ€μ λ¬Έμ μ
1) μλ―Έμλ λ¬Έμμ΄λ‘ ννλμ§ μμ : κ°κ° λ€λ₯Έ κ°μΈ κ² κ΅¬λΆ λΆκ°(μ«μκ°μ΄ μΆλ ₯λμ΄ λ¬΄μ¨ μλ―Έλ₯Ό κ°λμ§ λͺ¨λ¦)
2) κ°μ λνμ μΌλ‘ νννκΈ°μ λΆμ μ : μμ νλκ° μ μΈλ μλ£ν(ν΄λμ€)μ΄ λ¬΄μλ―Έ
: μλ μμ λ λ€λ₯Έ κ²μ λννλ μμνλλ₯Ό μΈν°νμ΄μ€λ‘ ꡬννμλ λ¬Έμ μ μ΄λ€.
package enumerate;
// λ¨μ§ μμνλλ₯Ό μ μΈνκΈ°μν΄ λ§λλ μΈν°νμ΄μ€
// μμνλ : κ°λμ μ¬μ©νκΈ° μν νλ
// μμνλλ₯Ό κ΅³μ΄ μΈν°νμ΄μ€μ λ§λλ μ΄μ ? μ μΈμ΄ κ°λ¨νμμ γ
ν£
public interface InterfaceOne {
int INSERT=1, UPDATE=2, DELETE=3, FIND=4;
}
package enumerate;
//μΌλΆλ¬ μΈν°νμ΄μ€λ‘ μμνλλ₯Ό μ μΈν΄μ νμ©νλκ²μ λ¨μ μ 보μ¬μ£ΌκΈ°μν΄
//λ€λ₯Έ μμνλλͺ
μ λμΌν κ°μ λ£μ μμνλλ₯Ό μ μΈ
public interface InterfaceTwo {
int ADD=1, MODIFY=2, ERASE=3,SEARCH=4;
}
public static void main(String[] args) {
// μμνλλ₯Ό μΆλ ₯νλ©΄ κ·Έ κ°μ΄ μΆλ ₯λ¨ > μλ―Έμλ μ«μμ΄κΈ΄νμ§λ§ λνμ±μ΄ μμ(무μμ λννλκ°λ₯Ό λͺ¨λ¦)
System.out.println("μ
λ ₯ = "+InterfaceOne.INSERT);
System.out.println("λ³κ²½ = "+InterfaceOne.UPDATE);
System.out.println("μμ = "+InterfaceOne.DELETE);
System.out.println("κ²μ = "+InterfaceOne.FIND);
System.out.println("===============================");
System.out.println("μ
λ ₯ = "+InterfaceTwo.ADD);
System.out.println("λ³κ²½ = "+InterfaceTwo.MODIFY);
System.out.println("μμ = "+InterfaceTwo.ERASE);
System.out.println("κ²μ = "+InterfaceTwo.SEARCH);
System.out.println("===============================");
//μμνλμ λμΌν μλ£νμ λ³μμ μμνλκ°μ μ₯κ°λ₯
int choice=InterfaceTwo.ADD;
switch (choice) {
//caseλ λ³μλ‘ μ«μλ§ λ°μ μ μμ => "μμλ³μλ κ°λ₯!"
case InterfaceOne.INSERT:
System.out.println("# νμμ 보λ₯Ό μ μ₯ν©λλ€.");
break;
case InterfaceOne.UPDATE:
System.out.println("# νμμ 보λ₯Ό λ³κ²½ν©λλ€.");
break;
case InterfaceOne.DELETE:
System.out.println("# νμμ 보λ₯Ό μμ ν©λλ€.");
break;
case InterfaceOne.FIND:
System.out.println("# νμμ 보λ₯Ό κ²μν©λλ€.");
break;
}
// μ λ΄λ΄, μΌμ΄μ€κ΅¬λ¬Έμμ InterfaceTwo.ADDλ
// μ¬μ€ InterfaceOne.INSERT κ° μλμΌ!
// κ·Έλ¬λ κ°μ΄ λμΌνλ€κ³ κ°λ€κ³ μ²λ¦¬ν΄λ²λ Έμ§?
// μ΄κ² μΈν°νμ΄μ€μμνλμ λ¬Έμ μ μ΄μΌ!
//μΈν°νμ΄μ€λ₯Ό ν΅ν μμκ°μΆλ ₯μ λ¨μ
// 1) μλ―Έμλ λ¬Έμμ΄λ‘ ννλμ§ μμ : κ°κ°μ΄ λ€λ₯Έκ°μμ ꡬλΆν μ μμ
// 2) κ°μ λνμ μΌλ‘ νννκΈ° λΆμ μ : μμνλκ° μ μΈλ μλ£νμ΄ λ¬΄μλ―Έ
// μ΄κ²μ 보μνκΈ°μν΄μ Enumνμ΄ λμ¨κ±°μΌ
// λμ΄ν (Enumerate) => Since JDK1.5
}
* λμ΄νμ μ μΈνλ λ°©λ² : public enum λμ΄νλͺ { λ³μλͺ , λ³μλͺ , λ³μλͺ , ... }
=> λ¨μ§ λ³μλͺ μ μ°¨λ‘λλ‘ λμ΄λ§ νλ©΄ λ!
=> μ΄κΈ°κ°μ μλ΅νκ³ λ³μλͺ λ§ λμ΄μ μ μΈλλ μμλλ‘ 0~ 1μ© μ¦κ°νλ κ°μ μλμΌλ‘ μ§λ
=> κ°μ μ§μ μ§μ νλ κ²λ κ°λ₯
=> μ΄λ κ² μ μΈνλ©΄ κ°μ μ«μκ°μ κ°μ Έλ λ€λ₯Έ μμ νλ(λ€λ₯Έν΄λμ€,λ³μλͺ )λ₯Ό ꡬλΆν μ μμ!
* λμ΄νμ νμ©ν μ
package enumerate;
// Enumνμμ μμνλλ₯Ό μ μΈνλ λ°©λ² : λ³μλͺ
μμ± λ.
// μ΄κΈ°κ°μλ΅ : μμνλμμ μ μΈλλ μ«μλλ‘ 0λΆν° μμνμ¬ 1μ© μ¦κ°ν κ°μ μ§λ
public enum EnumOne {
INSERT,UPDATE,DELETE,FIND;
}
// κ°μ μμκ°μ κ°μ§λ§ λ€λ₯Έ λμ΄νμ μ μΈ
package enumerate;
public enum EnumTwo {
ADD,MODIFY,ERASE,SEARCH;
}
public static void main(String[] args) {
// μμνλμΆλ ₯ => μ«μκ°μ΄ μΆλ ₯X μμνλλͺ
μΆλ ₯O
// => μλ―Έμλ μ«μλμ , μλ―Έμλ λ¬Έμμ΄ κ·Έμμ²΄λ‘ νν (λνμ± μ )
System.out.println("μ
λ ₯ = "+EnumOne.INSERT);
System.out.println("λ³κ²½ = "+EnumOne.UPDATE);
System.out.println("μμ = "+EnumOne.DELETE);
System.out.println("κ²μ = "+EnumOne.FIND);
System.out.println("===============================");
System.out.println("μ
λ ₯ = "+EnumTwo.ADD);
System.out.println("λ³κ²½ = "+EnumTwo.MODIFY);
System.out.println("μμ = "+EnumTwo.ERASE);
System.out.println("κ²μ = "+EnumTwo.SEARCH);
System.out.println("===============================");
//μμνλλ intκ°μ κ°μ§κ³ μμ§λ§ intνμ λ³μμ μ μ₯ λΆκ°λ₯!
// int choice=EnumOne.INSERT; >> Type Mismatch λ°μ
//μμνλκ° μ μΈλ Enumνμ μ΄μ©νμ¬ μμ±λ μ°Έμ‘°λ³μμλ StringμΌλ‘ μ μ₯κ°λ₯
EnumOne choice=EnumOne.INSERT; //μ΄λ μλ£νμ΄ EnumOneμ΄λ―λ‘ EnumOneκ°λ§ μ μ₯κ°λ₯
//μ€μμΉ κ΅¬λ¬Έμ λ€μ΄μλ Enumμλ£νμ λͺ¨λ λμΌν μλ£νμ μμνλλ‘λ§ ννκ°λ₯
switch (choice) {
//caseμ EnumOneμλ£νμ μ¬μ©νμΌλ―λ‘ μλ£νμλ΅νκ³ μμνλλͺ
λ§ μ¬μ©ν΄μΌν¨
case INSERT: //κ°μ κ°μΈ ADDλ₯Ό μ μΌλ©΄ μλ¬! => μ¦ κ°μ ꡬλΆκ°λ₯νλ€λ κ²!
System.out.println("# νμμ 보λ₯Ό μ μ₯ν©λλ€.");
break;
case UPDATE:
System.out.println("# νμμ 보λ₯Ό λ³κ²½ν©λλ€.");
break;
case DELETE:
System.out.println("# νμμ 보λ₯Ό μμ ν©λλ€.");
break;
case FIND:
System.out.println("# νμμ 보λ₯Ό κ²μν©λλ€.");
break;
}
System.out.println("===============================");
}
* Enumνμ μλ£ν λ³κ²½ μ°Έκ³ URL
https://blog.naver.com/irene-fts/221699036045
'Note for moment' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μλ£ν, Wrapperν΄λμ€ (0) | 2020.09.05 |
---|---|
[Java] μμΈ(Exception)μ μλ¬(Error), μμΈμ²λ¦¬, μμΈν΄λμ€μμ± λ° μ°Έμ‘° (0) | 2020.09.03 |
[OOP] μ±κΈν€ ν΄λμ€(Singleton) (0) | 2020.09.03 |
[Java] final, static (μ μ νλ/μ μ λ©μλ), mainλ©μλμ staticμ΄ λΆλ μ΄μ (0) | 2020.09.03 |
[Java] ν΄λμ€ λ‘λ, μλ° λ©λͺ¨λ¦¬ μμ, μ§μ μ (0) | 2020.09.03 |
λκΈ