π§ Java - μμ, λ€νμ±, μΆμ¬ ν΄λμ€ μ 보
π§ Java - μμ, λ€νμ±, μΆμ¬ ν΄λμ€ μ 보
π 07-1. ν΄λμ€ μμ
β κΈ°λ³Έ κ°λ
- ν΄λμ€ μμμ κΈ°μ‘΄ ν΄λμ€(λΆλͺ¨ ν΄λμ€)μ νλκ° λλ λ©μλλ₯Ό μμ ν΄λμ€μμ μ¬μ©ν μ μλλ‘ ν΄μ£Όλ κ²
extendsν€μλ μ¬μ©
class Parent {
void hello() {
System.out.println("Hello from Parent");
}
}
class Child extends Parent {
void hi() {
System.out.println("Hi from Child");
}
}
π μ κ·Ό μ νμμ λ°λ₯Έ μμ κ°λ₯ μ¬λΆ
| μ κ·Ό μ νμ | κ°μ ν¨ν€μ§ | λ€λ₯Έ ν¨ν€μ§ |
|---|---|---|
public |
β κ°λ₯ | β κ°λ₯ |
protected |
β κ°λ₯ | β κ°λ₯ |
| (default) | β κ°λ₯ | β λΆκ°λ₯ |
private |
β λΆκ°λ₯ | β λΆκ°λ₯ |
μμ λ¬Έμ - κΈ°λ³Έ μμ
π¨βπ©βπ§ λΆλͺ¨ μμ±μ νΈμΆ
- μμ κ°μ²΄λ₯Ό μμ±νλ©΄ λΆλͺ¨ κ°μ²΄ λ¨Όμ νΈμΆ
- μμ μμ±μμμ λΆλͺ¨ μμ±μλ₯Ό λͺ
μν:
super(...)
class Parent {
Parent(String msg) {
System.out.println("Parent μμ±μ: " + msg);
}
}
class Child extends Parent {
Child() {
super("λΆλͺ¨μκ² μ λ¬ν λ©μμ§");
System.out.println("Child μμ±μ");
}
}
λΆλͺ¨μ κΈ°λ³Έ μμ±μκ° μκ³ λ©κ°λ²μ μμ±μλ§ μλ κ²½μ°:
class Parent {
Parent(String name) {
System.out.println("Hello " + name);
}
}
class Child extends Parent {
Child(String name) {
super(name); // λ§μ§λ§μμκ° μλλΌ μ²« μ€μ μμΉ
}
}
super() vs super.
| κ΅¬λ¨ | μ€λͺ |
|---|---|
super() |
λΆλͺ¨ ν΄λμ€μ μμ±μ νΈμΆ |
super. |
λΆλͺ¨ ν΄λμ€μ λ©μλ/νλ νΈμΆ |
super() μμ
βοΈ λ©μλ μ€λ²λΌμ΄λ & super μ¬μ©
class Parent {
void greet() {
System.out.println("Hello from Parent");
}
}
class Child extends Parent {
@Override
void greet() {
super.greet();
System.out.println("Hello from Child");
}
}
λ©μλ μ€λ²λΌμ΄λ© μμ
<br>
#### super. μμ

<br>
---
## 𧬠07-2. νμ
λ³νκ³Ό λ€νμ±
### π μλ νμ
λ³ν (Upcasting)
```java
Parent p = new Child();
p.greet(); // μμμ μ€λ²λΌμ΄λ λ©μλ νΈμΆ
π§ͺ νλμ λ©κ°λ¦¬λ°μμ λ€νμ±
class Animal {
void sound() {
System.out.println("λλ¬Ό μ리");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("λͺ¬λͺ¬");
}
}
class Zoo {
void makeSound(Animal a) {
a.sound();
}
}
π κ°μ νμ λ³ν (Downcasting)
Animal a = new Dog();
if (a instanceof Dog) {
Dog d = (Dog) a;
d.sound();
}
π§± 07-3. μΆμ¬ ν΄λμ€
π μΆμ¬ ν΄λμ€μ μ©λ
- κ³΅ν΅ κΈ°λ³Έ ννμ κΈ°λ₯ μ€μ
- κ°μ²΄ μμ± νΉμ : β
βοΈ μ μΈ μμ
abstract class Animal {
abstract void sound();
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("μΌμ΄");
}
}
Animal a = new Cat(); // O
Animal b = new Animal(); // X
π§ μΆμ¬ λ©μλμ μ€μ νΉμ§
- μΆμ¬ λ©μλλ ꡬνλμ§ μμ λ©μλμ΄λ©°, μμ ν΄λμ€μμ κ²°κ³Όλ₯Ό κ°μ§κ³ ꡬν λμ΄μΌ νλ€.
- μΆμ¬ ν΄λμ€κ° μμμκ² κ²°κ³Ό μ 곡μ 건μ§νκ³ , μμμ μ¬λ¬ κ²μ κ²½μ°μ λ°λΌ λ€μν λ³ν(λ€νμ±)λ₯Ό 보μ¬μ€ μ μλ€.
- νμ ν΄λμ€κ° μΆμ¬ λ©μλλ₯Ό ꡬννμ§ μμ κ²½μ°, μ»΄ν¬μ μ€λ₯κ° λ°μν μ μλ€.
- μ:
abstract class Machine {
abstract void operate();
}
class Printer extends Machine {
@Override
void operate() {
System.out.println("Printing...");
}
}