Pet.
java
public interface Pet {
void speak();
String getName();
}
Animal.java
public abstract class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public abstract void move();
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Dog.java
public class Dog extends Animal implements Pet {
public Dog(String name, int age) {
super(name, age);
}
@Override
public void move() {
System.out.println(getName() + " runs on four legs.");
}
@Override
public void speak() {
System.out.println(getName() + " says: Woof!");
}
}
Cat.java
public class Cat extends Animal implements Pet {
public Cat(String name, int age) {
super(name, age);
}
@Override
public void move() {
System.out.println(getName() + " gracefully walks on four legs.");
}
@Override
public void speak() {
System.out.println(getName() + " says: Meow!");
}
}
Main.java
public class Main {
public static void main(String[] args) {
Pet dog = new Dog("Buddy", 4);
Pet cat = new Cat("Whiskers", 2);
dog.speak();
((Animal) dog).move();
cat.speak();
((Animal) cat).move();
}
}