package CHAP06;

//공통 인터페이스: 모든 반려동물이 구현해야 하는 기본 동작 정의
interface Animal1 {
	void eat();

	void sleep();

	void makeSound();

	void displayInfo();
}

//걷기 가능한 반려동물 인터페이스
interface Walkable1 {
	void walk();
}

//수영 가능한 반려동물 인터페이스
interface Swimmable1 {
	void swim();
}

//날기 가능한 반려동물 인터페이스
interface Flyable1 {
	void fly();
}

//앵무새 클래스: Animal, Walkable, Flyable 구현
class Parrot1 implements Animal1, Walkable1, Flyable1 {
	private String name;
	private int age;

	public Parrot1(String name, int age) {
		this.name = name;
		this.age = age;
	}

	@Override
	public void eat() {
		System.out.println(name + "이(가) 먹이를 먹고 있습니다.");
	}

	@Override
	public void sleep() {
		System.out.println(name + "이(가) 잠을 자고 있습니다.");
	}

	@Override
	public void makeSound() {
		System.out.println(name + "이(가) 지저귑니다. (짹짹!)");
	}

	@Override
	public void walk() {
		System.out.println(name + "이(가) 종종걸음으로 다닙니다.");
	}

	@Override
	public void fly() {
		System.out.println(name + "이(가) 하늘을 납니다.");
	}

	@Override
	public void displayInfo() {
		System.out.println("반려동물: " + name + ", 나이: " + age);
	}
}

//금붕어 클래스: Animal, Swimmable 구현
class Goldfish1 implements Animal1, Swimmable1 {
	private String name;
	private int age;

	public Goldfish1(String name, int age) {
		this.name = name;
		this.age = age;
	}

	@Override
	public void eat() {
		System.out.println(name + "이(가) 먹이를 먹고 있습니다.");
	}

	@Override
	public void sleep() {
		System.out.println(name + "이(가) 잠을 자고 있습니다.");
	}

	@Override
	public void makeSound() {
		System.out.println(name + "은(는) 소리를 내지 않습니다.");
	}

	@Override
	public void swim() {
		System.out.println(name + "이(가) 물속에서 헤엄칩니다.");
	}

	@Override
	public void displayInfo() {
		System.out.println("반려동물: " + name + ", 나이: " + age);
	}
}

public class LAB_02_PetSimulation {
	public static void main(String[] args) {
		Animal1 parrot = new Parrot1("앵무새", 2);
		Animal1 goldfish = new Goldfish1("금붕어", 1);

		// 앵무새 동작
		parrot.displayInfo();
		parrot.eat();
		parrot.makeSound();
		((Walkable1) parrot).walk();
		((Flyable1) parrot).fly();
		parrot.sleep();

		System.out.println();

		// 금붕어 동작
		goldfish.displayInfo();
		goldfish.eat();
		goldfish.makeSound();
		((Swimmable1) goldfish).swim();
		goldfish.sleep();
	}
}
