父类具有行为,吃eat,叫声shout,睡觉sLeep子类,猫,狗 子类猫狗吃和叫行为是不一样的,睡觉行为一样 通过继承实现上面的需求,编写测试类AnimaLTest进行测试
时间: 2024-10-14 21:17:34 浏览: 26
在面向对象编程中,如果有一个父类叫做`Animal`,它有通用的行为如`eat()`, `shout()`以及`sleep()`方法。当有两个具体的子类,比如`Cat`和`Dog`,它们分别有自己的特性和行为。例如,猫和狗吃东西可能会有不同的方式(`Cat.eat()`和`Dog.eat()`),叫声也不同(`Cat.shout()`和`Dog.shout()`),但睡眠的行为对于这两种动物来说是相同的。
为了体现这种继承和多态性,我们可以按照以下步骤来设计:
1. 定义`Animal`父类,包含通用的行为方法:
```java
public class Animal {
public void eat() {
System.out.println("Animal is eating.");
}
public void shout() {
System.out.println("Animal is shouting.");
}
public void sleep() {
System.out.println("Animal is sleeping.");
}
}
```
2. 对`Cat`和`Dog`子类进行扩展,覆盖父类方法并提供特定的行为:
```java
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("Cat is eating fish.");
}
@Override
public void shout() {
System.out.println("Cat says meow!");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("Dog is eating bones.");
}
@Override
public void shout() {
System.out.println("Dog barks!");
}
}
```
3. 编写`AnimalTest`测试类来演示多态:
```java
public class AnimalTest {
public static void main(String[] args) {
Animal cat = new Cat();
Animal dog = new Dog();
cat.eat(); // 输出 "Cat is eating fish."
cat.shout(); // 输出 "Cat says meow!"
dog.eat(); // 输出 "Dog is eating bones."
dog.shout(); // 输出 "Dog barks!"
cat.sleep(); // 输出 "Animal is sleeping." (因为子类共享了父类的sleep方法)
dog.sleep(); // 输出 "Animal is sleeping."
}
}
```
阅读全文