JAVA/객체지향 프로그래밍 (OOP) 기초

강아지/고양이 클래스 만들기

DEVLIB 2025. 4. 13. 18:27
728x90

목표

  • Animal이라는 부모 클래스를 만들고
  • Dog, Cat 클래스가 이를 상속
  • 각각 고유한 sound() 메서드를 오버라이딩해서 소리를 다르게 출력

1. Animal 부모 클래스

public class Animal {
    String name;

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

    void sound() {
        System.out.println("동물이 소리를 냅니다.");
    }

    void eat() {
        System.out.println(name + "가 밥을 먹습니다.");
    }
}

2. Dog 클래스 – Animal 상속

public class Dog extends Animal {
    public Dog(String name) {
        super(name);  // 부모 생성자 호출
    }

    @Override
    void sound() {
        System.out.println(name + "가 멍멍 짖습니다!");
    }
}

3. Cat 클래스 – Animal 상속

public class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    @Override
    void sound() {
        System.out.println(name + "가 야옹야옹 울어요~");
    }
}

4. Main 클래스 – 객체 생성 및 사용

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("초코");
        Cat cat = new Cat("나비");

        dog.sound();  // 초코가 멍멍 짖습니다!
        cat.sound();  // 나비가 야옹야옹 울어요~

        dog.eat();    // 초코가 밥을 먹습니다.
        cat.eat();    // 나비가 밥을 먹습니다.
    }
}

추가 확장 아이디어

  • walk(), sleep() 메서드 추가
  • ArrayList<Animal>에 여러 마리 동물 넣고 sound() 반복 호출
  • abstract 클래스나 interface로 확장하기

마무리 요약

클래스 역할
Animal 부모 클래스 – 공통 속성(name), 메서드(eat, sound)
Dog, Cat 자식 클래스 – sound() 오버라이딩
Main 객체 생성 및 테스트 실행
LIST