-
[Java] ch5 μλ° μμ (λ©μλ μ€λ²λ‘λ© vs λ©μλ μ€λ²λΌμ΄λ©) / μμ±μ
2023. 9. 5.
03 μμ
class A extends B{ }
- extends ν€μλλ₯Ό μ¬μ©νμ¬ μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ κΈ°λ₯μ κ·Έλλ‘ λ¬Όλ €λ°μ
- λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°μ μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€μ κΈ°λ₯μ λνμ¬ μλ‘μ΄ λ©μλλ₯Ό μμ± κ°λ₯
IS-A κ΄κ³ vs HAS-A κ΄κ³
IS-A κ΄κ³
Animal dog = new Dog(); // Dog is a Animal (o) Dog dog = new Animal(); // Animal is a Dog (X) μ»΄νμΌ μ€λ₯
- '~μ ~μ΄λ€.'λ‘ μμκ΄κ³λ₯Ό μλ―Έ (extendsλ₯Ό μ¬μ©)
- μμ ν΄λμ€κ° μΌλ°μ μΈ κ°λ ν΄λμ€μ΄κ³ νμ ν΄λμ€κ° ꡬ체μ μΈ κ°λ ν΄λμ€κ° λ¨
- μμ ν΄λμ€μ κ°μ²΄λ λΆλͺ¨ ν΄λμ€μ μλ£νμΈ κ²μ²λΌ μ¬μ© κ°λ₯ (λΆλͺ¨ ν΄λμ€λ μμ ν΄λμ€λ§μ λ©μλ μ¬μ©x)
- λΆλͺ¨ ν΄λμ€λ‘ λ§λ€μ΄μ§ κ°μ²΄λ₯Ό μμ ν΄λμ€μ μλ£νμΌλ‘ μ¬μ© λΆκ°
HAS-A κ΄κ³
public class Computer{ } public class Power { public void on(){ System.out.println("Power on"); } public void off(){ System.out.println("Power off"); } } public Samsung extends Computer{ public void SamsungPower(){ Power power=new Power; power.on(); } }
- ‘~μ ~μ κ°μ§κ³ μλ€.'λ‘ ν¬ν¨κ΄κ³λ₯Ό μλ―Έ μμx
- κΈ°λ₯μ λΆλ¬μ€κΈ° λλ¬Έμ μλ‘μ΄ μμ±μλ₯Ό μμ±ν΄μΌ ν¨
has-a κ΄κ³λ μ½λ μ¬μ¬μ©μ ν λ°©λ²μ΄λ€.
μμκ΄κ³(is-aκ΄κ³)보λ€λ ν¬ν¨κ΄κ³(has-aκ΄κ³)λ₯Ό ν¨μ¬ λ§μ΄ μ΄λ€.
Object ν΄λμ€
- μλ°μ μ΅μμ λΆλͺ¨ ν΄λμ€
- extends ν€μλλ‘ λ€λ₯Έ ν΄λμ€λ₯Ό μμνμ§ μμΌλ©΄ μμμ μΌλ‘ μμ
Object animal = new Animal(); // Animal is a Object Object dog = new Dog(); // Dog is a Object
- μλ°μμ λ§λλ λͺ¨λ κ°μ²΄λ Object μλ£νμΌλ‘ μ¬μ© κ°λ₯
λ©μλ μ€λ²λΌμ΄λ©
- μμ κ΄κ³μ μλ λΆλͺ¨ ν΄λμ€μμ μ΄λ―Έ μ μλ λ©μλλ₯Ό μμ ν΄λμ€μμ μ¬μ μνμ¬ μ¬μ©νλ κ²
- μ€λ²λΌμ΄λ©νκ³ μ νλ λ©μλμ μ μΈμ΄ λμΌν΄μΌ ν¨ (λ©μλ μ΄λ¦, μ μΆλ ₯μ΄ λμΌ) → μ¬μ μλ λ©μλκ° μ°μ μμ
λ©μλ μ€λ²λ‘λ©
- κΈ°μ‘΄μ μλ μλ‘μ΄ λ©μλλ₯Ό μΆκ°νλ κ²
- μλ°μ ν ν΄λμ€ λ΄μ κ°μ μ΄λ¦μ κ°μ§ λ©μλκ° μλλΌλ 맀κ°λ³μμ κ°μ λλ νμ μ΄ λ€λ₯΄λ©΄, κ°μ μ΄λ¦μ μ¬μ©ν΄μ λ©μλλ₯Ό μ μνλ κ²
- cμΈμ΄μ λ¬λ¦¬ μλ°λ νλμ λ©μλ μ΄λ¦μΌλ‘ μ¬λ¬ κΈ°λ₯μ ꡬν κ°λ₯
- λ©μλμ μ΄λ¦μ΄ κ°κ³ , 맀κ°λ³μμ κ°μλ νμ μ΄ λ¬λΌμΌ ν¨
κ΅¬λΆ Overriding Overloading μ κ·Ό μ μ΄μ λΆλͺ¨ ν΄λμ€μ λ©μλμ μ κ·Ό μ μ΄μλ³΄λ€ λ λμ λ²μμ μ κ·Ό μ μ΄μλ₯Ό μμ ν΄λμ€μ λ©μλμμ μ€μ ν μ μλ€. λͺ¨λ μ κ·Ό μ μ΄μλ₯Ό μ¬μ©ν μ μλ€. 리ν΄ν λμΌν΄μΌ νλ€. λ¬λΌλ λλ€. λ©μλλͺ λμΌν΄μΌ νλ€. λμΌν΄μΌ νλ€. 맀κ°λ³μ λμΌν΄μΌ νλ€. λ¬λΌμΌλ§ νλ€. μ μ© λ²μ μμκ΄κ³μμ μ μ©λλ€. κ°μ ν΄λμ€ λ΄μμ μ μ©λλ€. λ€μ€ μμ
- ν΄λμ€κ° λμμ νλ μ΄μμ ν΄λμ€λ₯Ό μμλ°λ κ²
- μλ°λ c++, νμ΄μ¬κ³Ό λ¬λ¦¬ λ€μ€ μμμ μ§μνμ§ x
μΈμ©
2. Java μλ° [API] - Object ν΄λμ€, Object ν΄λμ€μ λ©μλ 1
[Java]μ€λ²λ‘λ© & μ€λ²λΌμ΄λ©(Overloading & Overriding)
04 μμ±μ(Constructor)
- κ°μ²΄κ° μμ±λ λ(newν€μλκ° μ¬μ©λ λ) μλμΌλ‘ νΈμΆλλ λ©μλ, κ°μ²΄μ μ΄κΈ°νλ₯Ό μν΄ μ¬μ©
νΉμ§
- μμ±μλ κ°μ²΄κ° μμ±λ λ μλμΌλ‘ νλ² νΈμΆλ¨
- μμ±μλ 맀κ°λ³μ 쑰건μ λ°λΌ μ¬λ¬κ°λ₯Ό μμ± κ°λ₯ (μ€λ²λ‘λ©)
- μμ±μλ ν΄λμ€μ μ΅μ 1κ°λ μμ΄μΌ νλ©°, μμ±μ μ½λκ° μμ κ²½μ° μ»΄νμΌλ¬κ° κΈ°λ³Έμμ±μλ₯Ό μλμΌλ‘ μμ±
- μμ±μκ° νλλΌλ μμΌλ©΄ κΈ°λ³Έ μμ±μ μλ μμ±x
μ μΈ μ‘°κ±΄
- ν΄λμ€λͺ κ³Ό λ©μλλͺ μ΄ λμΌ
- λ¦¬ν΄ νμ μ μ μx (void μ¬μ©x)
κΈ°λ³Έ μμ±μ(default constructor)
public class constructor{ public constructor(){} //κΈ°λ³Έ μμ±μ μλ μμ± }
- μμ±μμ μ λ ₯ νλͺ©μ΄ μκ³ μμ±μ λ΄λΆμ μ무 λ΄μ©μ΄ μλ μμ±μ
- ν΄λμ€μ μμ±μκ° μ μΈλμ΄μμ§ μμ κ²½μ° μ»΄νμΌλ¬κ° μλμΌλ‘ λν΄νΈ μμ±μλ₯Ό μΆκ°
μμ±μ μ€λ²λ‘λ©
- μλ°μ ν ν΄λμ€ λ΄μ κ°μ μ΄λ¦μ κ°μ§ μμ±μκ° μλλΌλ κ°μ μ΄λ¦μ μ¬μ©ν΄μ μ λ ₯κ°μ΄ λ€λ₯Έ μμ±μλ₯Ό μ μνλ κ²
- λ¬Έμμ΄λ‘ μ λ ₯κ°μ λ°λ μμ±μμ μ μλ‘ μ λ ₯κ°μ λ°λ μμ±μκ° μμΌλ©΄ κ°μ²΄λ₯Ό μμ±ν λ λ¬Έμμ΄ νΉμ μ μλ‘ μμ±ν μ μλ€
'π Study > : Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] ch5 μλ° OOP λ€νμ± / μΆμ λ©μλμ μΆμ ν΄λμ€ (0) 2023.09.08 [Java] ch5 μλ° μΈν°νμ΄μ€ (0) 2023.09.08 [Java] ch5 μλ° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° OOP (ν΄λμ€, λ©μλ, μλ° λ³μ) (0) 2023.09.05 [Java] ch4 μ μ΄λ¬Έ (0) 2023.08.31 [Java] ch3 μλ°μ μλ£ν (Data type) μ 리 (1) 2023.08.13 λκΈ