π OOPμ 4λ νΉμ§
ππ» μΆμν Abstraction
- κ°μ²΄μ 곡ν΅μ μΈ μμ±κ³Ό κΈ°λ₯μ μΆμΆνμ¬ κ³΅ν΅μ μ‘°μμ λ§λλ κ²
- κΈ°μ‘΄ ν΄λμ€λ€μ 곡ν΅μ μΈ μμλ€μ μΆμΆνμ¬ μμ ν΄λμ€λ₯Ό λ§λ€μ΄ λ
→ κ³΅ν΅ μμ±κ³Ό κΈ°λ₯μ μ μνκ³ νμν΄λμ€ μμ± κ°λ₯
→ νμ ν΄λμ€λ€μ 곡ν΅μ±μ λͺ¨μ μμ ν΄λμ€ μ μ κ°λ₯
π abstract μ μ΄μ
- abstract : λ―Έμμ±, μΆμμ μΈ
abstract class Example{ //μΆμ ν΄λμ€
abstract void start(); //μΆμ λ©μλ
}
π μΆμ λ©μλ
abstract void stop();
- λ©μλ μκ·Έλμ²λ§ μκ³ λ°λλ μλ λ©μλ
π μΆμ ν΄λμ€
- λ―Έμμ± λ©μλ(μΆμ λ©μλ)λ₯Ό ν¬ν¨νλ ν΄λμ€μ΄μ λ―Έμμ± μ€κ³λ
- λ―Έμμ± κ΅¬μ‘°λ₯Ό κ°μ§κ³ μκΈ° λλ¬Έμ μ΄λ₯Ό κΈ°λ°μΌλ‘ κ°μ²΄ μμ± λΆκ°
- μμ κ΄κ³μ μμ΄ μλ‘μ΄ ν΄λμ€ μμ±μ λ§€μ° μ μ©
→ μμ ν΄λμ€μμ μ μΈλΆλ§ μμ±νκ³ νμ ν΄λμ ꡬ체μ μΈ λ΄μ© ꡬννλ€λ©΄ λ³κ²½ μ¬νμ μ μ°νκ² λμ κ°λ₯
= μ€λ²λΌμ΄λ© μ¬μ© ( μμμ λ°λ νμ ν΄λμ€μμ μ€λ² λΌμ΄λ©μ ν΅ν΄ κ°κ° μν©μ λ§λ λ©μλ ꡬν κ°λ₯)
ππ» μ¬λ¬ μ¬λμ΄ κ°λ°ν λ 곡ν΅λ μμ±κ³Ό κΈ°λ₯μ λ€λ₯΄κ² μ μνλ μ€λ₯λ₯Ό λ―Έμ°μ λ°©μ§
μΆμνλ μμμμ νμλ‘ λ΄λ €κ° μλ‘ μ μ ꡬ체ν λλ€κ³ λ³Ό μ μμ
μμ ν΄λμ€μμ 곡ν΅λ κΈ°λ₯κ³Ό μμ±μ μ μνκ³
νμ ν΄λμ€μμ μμ λ°μ μ€κ³ λ³κ²½
μμκ΄κ³μ μμ΄ μλ‘μ΄ ν΄λμ€ μμ± μ μ©
π final ν€μλ
- final : μ΅μ’ μ, λ§μ§λ§μ → λ μ΄μ λ³κ²½μ΄ λΆκ°λ₯νκ±°λ νμ₯λμ§ μμ
(1) final + ν΄λμ€ : λ³κ²½ λλ νμ₯, μμ λΆκ°
(2) final + λ©μλ : μ€λ²λΌμ΄λ© λΆκ°
(3) final + λ³μ : κ° λ³κ²½μ΄ λΆκ°λ₯ν μμ
final class Test { //final ν΄λμ€
final String test = "λ³κ²½ λΆκ°"; //final λ³μ
final void testing() { //final λ©μλ
final int x = test;
return test;
}
}
π μΈν°νμ΄μ€
inter ( ~μ¬μ΄ ) + face ( μΌκ΅΄ / λ©΄ )
- interface : λ°κ·Έλ¦Ό / κ°λ©΄
- λ κ°μ²΄(λμ) κ° μ°κ²°κ³Ό μν΅μ λλ κ°κ΅
- μΆμ λ©μλμ μ§ν© ( Only μΆμλ©μλμ μμλ§μ λ©€λ²λ‘ κ°μ§ )
- μΆμ ν΄λμ€λ³΄λ€ λμ μΆμμ±
(1) interface ν€μλ μ¬μ©
(2) λ΄λΆμ λͺ¨λ νλκ° public static finalλ‘ μ μ
(3) staticκ³Ό default λ©μλ μ΄μΈ λͺ¨λ λ©μλκ° public abstractλ‘ μ μ
public interface Test {
public static final int ugly = 1; // final int, static intλΌκ³ μ¨λ 무방
public static final int pretty = 2; // finalκ³Ό staticλ§ μ¬μ©ν΄λ
public static final int cute = 3; // public static finalμ μλ―Έλ₯Ό κ°μ§κ³ μμ
public abstract String testFighting();
public abstract void call(); // void call()λ§ μ¨λ ok
}
ππ» μ¦, μμλ₯Ό μ μνλ κ²½μ° : public static finalλ‘ μ μ
λ©μλλ₯Ό μ μνλ κ²½μ° : public abstractλ‘ μ μ ( μλ΅νλ κ²½μ° μ»΄νμΌλ¬κ° μλ μμ± )
π μΈν°νμ΄μ€ ꡬν
- μ΄λ€ ν΄λμ€κ° μ΄λ€ μΈν°νμ΄μ€λ₯Ό ꡬννλ€ = ν΄λμ€ λ΄μ μΈν°νμ΄μ€κ° κ°μ§ λͺ¨λ μΆμ λ©μλ μ€λ²λΌμ΄λ©
class ν΄λμ€λͺ
implements μΈν°νμ΄μ€λͺ
1, μΈν°νμ΄μ€λͺ
2. .. { ... }
- ν΄λμ€ κ° μμμ λ¨ νλλ§ κ°λ₯ → νμ ν΄λμ€λ λ¨ νλμ μμ ν΄λμ€λ§ μμλ°μ μ μμ
but, μΈν°νμ΄μ€λ λ€μ€ μμ κ°λ₯ ! → νλμ ν΄λμ€κ° μ¬λ¬ κ°μ μΈν°νμ΄μ€ ꡬν κ°λ₯
π‘ ν΄λμ€μμ λ€μ€ μμμ΄ λΆκ°λ₯ν μ΄μ ?
- λΆλͺ¨ ν΄λμ€μ λμΌν μ΄λ¦μ νλ λλ λ©μλκ° μ‘΄μ¬νλ κ²½μ° μΆ©λ λ°μ
→ μΈν°νμ΄μ€λ λ―Έμμ± λ©€λ²μ΄κΈ° λλ¬Έμ μΆ©λ λ°μ x
π‘ ν΄λμ€ μμκ³Ό λμμ μΈν°νμ΄μ€ ꡬν κ°λ₯
abstract class Pet { public abstract void eat();}
interface Animal { public abstract void sleep();}
class Pig extends Pet implements Animal {
public void eat(){
System.out.println("λ λ ");
}
public void sleep(){
System.out.println("μΏ¨μΏ¨");
}
'Study > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TIL] μΆμν΄λμ€ vs μΈν°νμ΄μ€ (0) | 2022.05.15 |
---|---|
[TIL] λ€νμ± (0) | 2022.05.15 |
[TIL] 컬λ μ Collection (0) | 2022.05.15 |
[TIL] μ°Έμ‘°λ³μμ μ°Έμ‘°νμ (0) | 2022.05.14 |
[TIL] μμ (0) | 2022.05.12 |