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
'JAVA > 객체지향 프로그래밍 (OOP) 기초' 카테고리의 다른 글
| 간단한 RPG 캐릭터 설계 (1) | 2025.04.13 |
|---|---|
| 학생 정보 관리 시스템 (0) | 2025.04.13 |
| 부모 타입으로 자식 객체 다루기 (2) | 2025.04.13 |
| 오버라이딩 개념 (0) | 2025.04.13 |
| extends 키워드로 상속하기 (0) | 2025.04.13 |