π©· Javaμ μμμ΄λ?
μμμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό λ¬Όλ €λ°λ κΈ°λ₯μ λ§ν©λλ€.
μμμ ν΅ν΄ μ½λ μ¬μ¬μ©μ±μ λμ΄κ³ , μ½λλ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μμ΅λλ€.
π
μμ λ λ§λ¦¬μ ν λΌκ° 보μ΄μλμ? μλ§ν λΌμ μκΈ°ν λΌκ° μμ΅λλ€.
μ΄ λ ν λΌλ₯Ό μΆμννμ¬ κ°μ²΄λ₯Ό λ§λ λ€κ³ νμ λ, λ ν λΌμ 곡ν΅μ μ΄ λ¬΄μμΌκΉμ?
λ λ€ ν λΌλΌλ μ μ λλ€.
ν λΌμ νΉμ§μ 2κ°μ§λ§ λ½μλ³΄κ² μ΅λλ€. ν λΌλ κΉ‘μΆ©κΉ‘μΆ© λ°λ©°, λΉκ·Όμ μ’μν©λλ€.
(μ€μ μ¬μ€κ³Ό 무κ΄ν μ μμ΅λλ€.)
μ¬κΈ°μ, μ λ²μκ°μ λ°°μ λ has-a κ΄κ³λ₯Ό λ μ¬λ € λ΄ μλ€. 'OOμ OOλ₯Ό κ°μ§λ€'λΌλ κ°λ μ΄μμ΅λλ€.
μμμ has-a κ΄κ³μ μ½κ° λ€λ¦ λλ€. νν is-aλΌκ³ ν©λλ€. 'OOμ OOμ΄λ€'λΌλ κ°λ μ λλ€.
'μκΈ° ν λΌλ ν λΌλ₯Ό κ°μ§λ€' vs 'μκΈ° ν λΌλ ν λΌμ΄λ€.' μ΄λ€ ννμ΄ μμ°μ€λ¬μ°μ κ°μ?
μλ§ λλΆλΆ νμκ° λ μμ°μ€λ½λ€κ³ λλ΅νμ€ κ²λλ€. μ΄λ κ² is-a κ΄κ³μΌ λ μμμ μ¬μ©ν©λλ€.
ν λΌλΌλ ν΄λμ€κ° μλ€κ³ κ°μ ν΄λ³΄κ² μ΅λλ€. ν λΌλΌλ ν΄λμ€μλ λΉκ·Όμ λ¨Ήλ λ©μλμ κΉ‘μΆ©κΉ‘μΆ© λ°λ λ©μλκ° μμ΅λλ€..
λ§μ½ μκΈ°ν λΌμ μλ§ν λΌκ° μ΄ ν λΌν΄λμ€λ₯Ό μμλ°κ² λλ©΄, λ©μλλ₯Ό λ€μ μ μν νμ μμ΄ μ¬μ©ν μ μκ² λ©λλ€.
μΆνμ μκΈ°ν λΌμ νμ λ€μ΄ λμ΄λλ, λΉκ·Όμ λ¨Ήλ λ©μλμ κΉ‘μΆ©κΉ‘μΆ© λ°λ λ©μλλ₯Ό μ¬μ μν νμκ° μκ² λλ κ²μ λλ€.
μμΈν 건 μλμμ μ€λͺ λλ¦¬κ² μ΅λλ€.
π°
μμ(Inheritance)μ νλμ ν΄λμ€κ° λ€λ₯Έ ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό λ¬Όλ €λ°μ μ¬μ¬μ©νλ κ²μ μλ―Έν©λλ€.
μμμ ν΅ν΄ μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€μ λ©€λ² (νλμ λ©μλ)λ₯Ό μ¬μ©ν μ μμΌλ©°, νμμ λ°λΌ μ΄λ₯Ό μΆκ°νκ±°λ μμ ν μ μμ΅λλ€.
λΆλͺ¨ ν΄λμ€ (Superclass) : μμ±κ³Ό λ©μλλ₯Ό μμ ν΄λμ€μ μ 곡νλ ν΄λμ€μ λλ€.
μμ ν΄λμ€ (SubClass) :λΆλͺ¨ ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό μμλ°μ μ¬μ©νλ ν΄λμ€μ λλ€.
extends ν€μλ :Javaμμ μμμ μ μΈν λ μ¬μ©νλ ν€μλμ λλ€.
β€οΈμμμ νΉμ§
μ½λ μ¬μ¬μ© | μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€μ μ½λλ₯Ό μ¬μ¬μ©ν μ μμ΄ μ€λ³΅ μ½λλ₯Ό μ€μΌ μ μμ΅λλ€. |
νμ₯μ± | κΈ°μ‘΄ ν΄λμ€λ₯Ό νμ₯νμ¬ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μ μμ΅λλ€. |
λ€νμ±(Polymorphism) | λΆλͺ¨ ν΄λμ€λ‘ μ μΈλ κ°μ²΄κ° μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μμ΄ λ€μν κ°μ²΄λ₯Ό λμΌν λ°©μμΌλ‘ λ€λ£° μ μμ΅λλ€. |
λ¨μΌ μμ | Javaλ λ¨μΌ μμλ§μ μ§μνλ©°, ν ν΄λμ€λ μ€μ§ νλμ λΆλͺ¨ ν΄λμ€λ₯Ό κ°μ§ μ μμ΅λλ€. νμ§λ§ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ λ€μ€ μμμ ν¨κ³Όλ₯Ό μ»μ μ μμ΅λλ€. μΈν°νμ΄μ€μ λν΄μλ μΆνμ μ€λͺ λλ¦¬κ² μ΅λλ€. |
π©·μμμ μ₯μ
- μ μ§λ³΄μ μ©μ΄ : μ½λμ μ€λ³΅μ μ€μ¬ μ μ§λ³΄μλ₯Ό μ½κ² ν©λλ€.
- κ³μΈ΅μ ꡬ쑰 : λ Όλ¦¬μ μΈ κ³μΈ΅ ꡬ쑰λ₯Ό νμ±νμ¬ μ½λμ μ΄ν΄μ κ΄λ¦¬κ° μ©μ΄ν©λλ€.
- μ¬μ¬μ©μ± : κΈ°μ‘΄ μ½λλ₯Ό μ¬μ¬μ©νμ¬ κ°λ° μκ°μ λ¨μΆνκ³ ν¨μ¨μ±μ λμ λλ€.
- λ€νμ± μ§μ : λ€νμ±μ ν΅ν΄ μ μ°ν μ½λ μμ±μ΄ κ°λ₯ν΄μ§λλ€.
μμ μμ )
μμμ λν΄μ μμ μ ν¨κ» μ€λͺ λλ¦¬κ² μ΅λλ€.
μλλ ν λΌ ν΄λμ€ , λΆλͺ¨ ν΄λμ€μ λλ€ (Super Class)
Rabbit.java
// λΆλͺ¨ ν΄λμ€
class Rabbit {
public void jump() {
System.out.println("The rabbit jumps.");
}
public void eatCarrot() {
System.out.println("The rabbit eats a carrot.");
}
}
BabyRabbit.java
//μμ ν΄λμ€
class BabyRabbit extends Rabbit {
public void play() {
System.out.println("The baby rabbit plays.");
}
}
MotherRabbit.java
// μμ ν΄λμ€
class MotherRabbit extends Rabbit {
public void careForBabies() {
System.out.println("The mother rabbit cares for her babies.");
}
}
Main.java
public class Main {
public static void main(String[] args) {
BabyRabbit babyRabbit = new BabyRabbit();
MotherRabbit motherRabbit = new MotherRabbit();
// λΆλͺ¨ ν΄λμ€μ λ©μλ νΈμΆ
babyRabbit.jump();
babyRabbit.eatCarrot();
babyRabbit.play();
// λΆλͺ¨ ν΄λμ€μ λ©μλ νΈμΆ
motherRabbit.jump();
motherRabbit.eatCarrot();
motherRabbit.careForBabies();
}
}
μ΄ μμ μμ μκΈ° ν λΌλ§μ λ©μλμ, μλ§ ν λΌλ§μ λ©μλκ° μμ΅λλ€.
λ€λ§ 'jump'μ 'eatCarrot' λ©μλλ μ¬μ μν νμ μμ΄ μ¬μ©ν μ μμ΅λλ€.
" μμ½ "
- μμμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ ν΅μ¬ κ°λ μ€ νλλ‘, κΈ°μ‘΄ ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό λ¬Όλ €λ°μ μλ‘μ΄ ν΄λμ€λ₯Ό μ μνλ κΈ°λ₯μ λλ€.
- μ΄λ₯Ό ν΅ν΄ μ½λ μ¬μ¬μ©μ±μ λμ΄κ³ , κ³μΈ΅ ꡬ쑰λ₯Ό νμ±νμ¬ μ½λμ κ΄λ¦¬μ μ μ§λ³΄μλ₯Ό μ©μ΄νκ² ν©λλ€.
- Javaμμλ 'extends' ν€μλλ₯Ό μ¬μ©ν΄ μμμ ꡬννλ©°, λ¨μΌ μμλ§μ μ§μν©λλ€.
Javaλ 100% μμꡬ쑰μ λλ€.
λͺ¨λ ν΄λμ€λ κ°μ²΄λ₯Ό μμλ°κ³ μμ΅λλ€.
μμμ λν΄μ κΌ μμ§ν΄μ£ΌμΈμ!
μ§λ¬Έμ μΈμ λ μ§ λκΈμ λ¨κ²¨μ£ΌμΈμ.
π©΅π°π©΅
'βJava' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java μ΄ν΄νκΈ°] 20. Javaμ has-a κ΄κ³ (1) | 2024.05.27 |
---|---|
[Java μ΄ν΄νκΈ°] 19. Javaλ‘ λν λ©΄μ ꡬνκΈ° (1) | 2024.05.27 |
[Java μ΄ν΄νκΈ°] 18. Javaμ μ€λ²λ‘λ© (2) | 2024.05.27 |
[Java μ΄ν΄νκΈ°] 17. Javaμ this (1) | 2024.05.27 |
[Java μ΄ν΄νκΈ°] 16. Javaμ μμ±μ (2) | 2024.05.27 |