2025-03-06
μμ(Inheritance) μ λΆλͺ¨ ν΄λμ€μ μμ±κ³Ό κΈ°λ₯μ μμ ν΄λμ€κ° λ¬Όλ €λ°μ μ¬μ©νλ κ°λ μ΄λ€.
extends
ν€μλλ₯Ό μ¬μ©νμ¬ μμμ ꡬννλ€. Point2D
μ Point3D
ν΄λμ€class Point2D {
int x;
int y;
Point2D() {
System.out.println("Point2D λν΄νΈ μμ±μ νΈμΆ!");
}
Point2D(int x) {
this.x = x;
System.out.println("Point2D(int x) μμ±μ νΈμΆ!");
}
Point2D(int x, int y) {
this.x = x;
this.y = y;
System.out.println("Point2D(int x, int y) μμ±μ νΈμΆ!");
}
}
class Point3D extends Point2D {
int z;
Point3D() {
super();
System.out.println("Point3D λν΄νΈ μμ±μ νΈμΆ!");
}
Point3D(int x) {
super(x);
System.out.println("Point3D(int x) μμ±μ νΈμΆ!");
}
Point3D(int x, int y) {
super(x, y);
System.out.println("Point3D(int x, int y) μμ±μ νΈμΆ!");
}
Point3D(int x, int y, int z) {
super(x, y);
this.z = z;
System.out.println("Point3D(int x, int y, int z) μμ±μ νΈμΆ!");
}
@Override
public String toString() {
return "Point3D [z=" + z + ", x=" + x + ", y=" + y + "]";
}
}
public class InheritanceMain {
public static void main(String[] args) {
Point3D ob1 = new Point3D(10, 20, 30);
System.out.println(ob1);
}
}
Point2D(int x, int y) μμ±μ νΈμΆ!
Point3D(int x, int y, int z) μμ±μ νΈμΆ!
Point3D [z=30, x=10, y=20]
λ©μλ μ€λ²λΌμ΄λ©(Method Overriding) μ λΆλͺ¨ ν΄λμ€μμ μ μν λ©μλλ₯Ό μμ ν΄λμ€μμ μ¬μ μνμ¬ μ¬μ©νλ κ°λ μ΄λ€.
κ΅¬λΆ | μ€λ²λ‘λ©(Overloading) | μ€λ²λΌμ΄λ©(Overriding) |
---|---|---|
μμ νμ μ¬λΆ | νμ μμ | νμν¨ |
λ©μλ ν€λ | λ³κ²½ κ°λ₯ (νλΌλ―Έν° κ°μ, νμ λ³κ²½ κ°λ₯) | λμΌν΄μΌ ν¨ (λ©μλλͺ , λ§€κ°λ³μ, λ°ν νμ λμΌ) |
λͺ©μ | κ°μ μ΄λ¦μ λ©μλλ₯Ό λ€μν λ°©μμΌλ‘ μ¬μ© | λΆλͺ¨ ν΄λμ€μ κΈ°λ₯μ λ³κ²½νμ¬ λ€νμ± κ΅¬ν |
Animal
, Dog
, Cat
ν΄λμ€class Animal {
void sound() {
System.out.println("μ리λΈλ€.");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("λ©λ©");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("μΌμΉ");
}
}
public class MethodOverridingMain {
public static void main(String[] args) {
Animal ani = new Animal();
ani.sound();
Dog dog1 = new Dog();
dog1.sound();
Cat cat1 = new Cat();
cat1.sound();
System.out.println("----------------");
ani = dog1; // μμ ν΄λμ€ μ°Έμ‘° λ³μκ° νμ κ°μ²΄ Dog μ°κ²°
ani.sound();
ani = cat1; // μμ ν΄λμ€ μ°Έμ‘° λ³μκ° νμ κ°μ²΄ Cat μ°κ²°
ani.sound();
}
}
μ리λΈλ€.
λ©λ©
μΌμΉ
----------------
λ©λ©
μΌμΉ
β
μμ(Inheritance) μ μ¬μ©νλ©΄ μ½λ μ€λ³΅μ μ€μ΄κ³ μ μ§λ³΄μλ₯Ό μ½κ² ν μ μλ€.
β
μμ±μ μ€λ²λ‘λ© μ νμ©νλ©΄ μ¬λ¬ κ°μ μμ±μλ₯Ό μ μνμ¬ κ°μ²΄ μ΄κΈ°νλ₯Ό μ μ°νκ² ν μ μλ€.
β
λ©μλ μ€λ²λΌμ΄λ©(Method Overriding) μ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μ¬μ μνμ¬ λ€νμ±μ ꡬννλ ν΅μ¬ κ°λ
μ΄λ€.
β
μ€λ²λ‘λ©κ³Ό μ€λ²λΌμ΄λ©μ ꡬλΆνλ κ²μ΄ μ€μνλ€.