관리 메뉴

ruriruriya

[Java] μžλ°” μƒμ†μ˜ ν™œμš©κ³Ό μžμ‹ 클래슀의 κΈ°λŠ₯ ν™•μž₯ λ³Έλ¬Έ

πŸͺJava

[Java] μžλ°” μƒμ†μ˜ ν™œμš©κ³Ό μžμ‹ 클래슀의 κΈ°λŠ₯ ν™•μž₯

루리야ㅑ 2024. 2. 23. 09:42
λ°˜μ‘ν˜•

μžλ°”μ—μ„œ 상속(Inheritance)은 ν•œ ν΄λž˜μŠ€κ°€ λ‹€λ₯Έ 클래슀의 속성과 λ©”μ„œλ“œλ₯Ό κ°€μ Έλ‹€ μ“Έ 수 μžˆλŠ” κΈ°λŠ₯을 μ˜λ―Έν•œλ‹€.
이λ₯Ό 톡해 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고, 클래슀 κ°„μ˜ 관계λ₯Ό ꡬ쑰화할 수 μžˆλ‹€.
상속은 λΆ€λͺ¨ 클래슀(Parent Class λ˜λŠ” Super Class)와 μžμ‹ 클래슀(Child Class λ˜λŠ” Sub Class) κ°„μ˜ 관계λ₯Ό μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 λͺ¨λ“  속성과 λ©”μ„œλ“œλ₯Ό μƒμ†λ°›λŠ”λ‹€.
μ΄λ ‡κ²Œ 상속받은 λ©”μ„œλ“œλ‚˜ 속성을 μžμ‹ ν΄λž˜μŠ€μ—μ„œ λ”°λ‘œ μž¬μ •μ˜(Override)ν•  μˆ˜λ„ 있고,
μƒˆλ‘œμš΄ λ©”μ„œλ“œλ‚˜ 속성을 μΆ”κ°€ν•  μˆ˜λ„ μžˆλ‹€.
이λ₯Ό 톡해 μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 κΈ°λŠ₯을 ν™•μž₯ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆλ‹€.

// λΆ€λͺ¨ 클래슀 μ •μ˜
class Animal {
    public void sound() {
        System.out.println("동물 μ†Œλ¦¬λ₯Ό λ‚΄λ‹€.");
    }
}

// μžμ‹ 클래슀 μ •μ˜
class Dog extends Animal {
    // λΆ€λͺ¨ 클래슀의 sound λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜
    @Override
    public void sound() {
        System.out.println("멍멍");
    }

    // μžμ‹ 클래슀의 μΆ”κ°€ λ©”μ„œλ“œ
    public void wagTail() {
        System.out.println("꼬리λ₯Ό 흔듀닀.");
    }
}

// 메인 클래슀
public class Main {
    public static void main(String[] args) {
        // λΆ€λͺ¨ 클래슀의 μΈμŠ€ν„΄μŠ€ 생성
        Animal animal = new Animal();
        animal.sound(); // 동물 μ†Œλ¦¬λ₯Ό λ‚΄λ‹€.

        // μžμ‹ 클래슀의 μΈμŠ€ν„΄μŠ€ 생성
        Dog dog = new Dog();
        dog.sound(); // 멍멍
        dog.wagTail(); // 꼬리λ₯Ό 흔듀닀.
    }
}

μœ„μ˜ μ½”λ“œμ—μ„œ Animal ν΄λž˜μŠ€λŠ” μ†Œλ¦¬λ₯Ό λ‚΄λŠ” sound λ©”μ„œλ“œλ₯Ό 가지고 μžˆλ‹€.
Dog ν΄λž˜μŠ€λŠ” Animal 클래슀λ₯Ό 상속받아 sound λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜κ³ ,
μΆ”κ°€λ‘œ
wagTail
λ©”μ„œλ“œλ₯Ό 가지고 μžˆλ‹€.
μ΄λ ‡κ²Œ
Dog ν΄λž˜μŠ€λŠ” Animal 클래슀의 κΈ°λŠ₯을 ν™•μž₯ν•˜κ³  μžˆλ‹€.

λ°˜μ‘ν˜•