상세 컨텐츠

본문 제목

[Java] 상속과 다형성 실전 활용 예제

JAVA

by dev.trams 2023. 7. 2. 20:30

본문

반응형



이전 포스팅에서는 객체 지향 프로그래밍(OOP)의 개념과 Java에서의 주요 개념에 대해 살펴보았습니다. 이번 포스팅에서는 실제 예제 코드를 통해 상속과 다형성의 실전 활용 방법을 알아보도록 하겠습니다.

1. 상속의 활용:
   - 상속은 기존 클래스를 확장하여 새로운 클래스를 만드는 개념입니다. 이를 통해 코드의 재사용성과 확장성을 높일 수 있습니다.
   - 예제로는 "동물(Animal)" 클래스를 상속받아 "고양이(Cat)" 클래스와 "강아지(Dog)" 클래스를 만들어보겠습니다.
   - 동물 클래스에는 공통적인 속성과 메서드를 정의하고, 고양이와 강아지 클래스에서는 각각의 특성에 맞는 추가적인 메서드를 정의할 수 있습니다.

2. 다형성의 활용:
   - 다형성은 객체가 여러 가지 타입을 가질 수 있는 특성입니다. 이를 통해 유연한 코드 작성과 객체 간의 상호교환성을 제공할 수 있습니다.
   - 예제로는 "동물(Animal)" 클래스를 다형성을 활용하여 "동물 배열"에 고양이와 강아지 객체를 함께 저장하고, 공통적인 메서드를 호출해보겠습니다.
   - 동물 배열에서 각 객체의 실제 타입에 따라서 다른 동작을 수행할 수 있습니다. 이를 통해 동물의 종류에 상관없이 일관된 코드를 작성할 수 있습니다.

반응형


다음은 실전 예제 입니다.

// 동물 클래스
class Animal {
    protected String name;

    public Animal(String name) {
        this.name = name;
    }

    public void sound() {
        System.out.println("동물이 소리를 내고 있습니다.");
    }
}

// 고양이 클래스
class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    public void sound() {
        System.out.println(name + "가 야옹 소리를 내고 있습니다.");
    }

    public void sleep() {
        System.out.println(name + "가 잠자는 중입니다.");
    }
}

// 강아지 클래스
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    public void sound() {
        System.out.println(name + "가 멍멍 소리를 내고 있습니다.");
    }

    public void run() {
        System.out.println(name + "가 달리고 있습니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal[] animals = new Animal[2];
        animals[0] = new Cat("나비");
        animals[1] = new Dog("뽀삐");

        for (Animal animal : animals) {
            animal.sound();

            if (animal instanceof Cat) {
                Cat cat = (Cat) animal;
                cat.sleep();
            } else if (animal instanceof Dog) {
                Dog dog = (Dog) animal;
                dog.run();
            }
        }
    }
}


이 예제는 동물을 나타내는 Animal 클래스를 상속받은 고양이 클래스(Cat)와 강아지 클래스(Dog)를 구현한 후, 이들을 동물 배열에 저장하고 공통 메서드를 호출하는 내용입니다.

실행 결과는 다음과 같습니다:

나비가 야옹 소리를 내고 있습니다.
나비가 잠자는 중입니다.
뽀삐가 멍멍 소리를 내고 있습니다.
뽀삐가 달리고 있습니다.


위의 예제를 통해 상속과 다형성이 어떻게 활용되는지 살펴볼 수 있습니다. 고양이와 강아지는 각각 다른 메서드를 가지고 있지만, 동물 배열을 통해 공통 메서드를 호출할 수 있습니다. 이렇게 상속과 다형성을 활용하면 코드의 유연성과 확장성을 높일 수 있습니다.



위의 예제를 통해 상속과 다형성이 실전에서 어떻게 활용되는지 살펴보았습니다. 다음 포스팅에서는 인터페이스와 추상 클래스에 대해 알아보고, 이를 활용한 실전 예제를 다루어보도록 하겠습니다.

반응형

관련글 더보기