头歌,Java继承和多态之综合练习
时间: 2023-12-26 08:05:41 浏览: 147
java继承与多态教学及练习
4星 · 用户满意度95%
好的,下面是一个综合练习:
假设有一个动物类 Animal,其中包含属性 name 和 age,以及方法 eat() 和 sleep()。现在有两个子类 Cat 和 Dog,它们都继承自 Animal 类,并且有各自的特有方法 catchMouse() 和 bark(),实现以下要求:
1. 定义 Animal 类,并在其中定义属性 name 和 age,以及方法 eat() 和 sleep()。
```java
public class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public void eat() {
System.out.println(name + " is eating.");
}
public void sleep() {
System.out.println(name + " is sleeping.");
}
}
```
2. 定义 Cat 类,继承自 Animal 类,并实现特有方法 catchMouse()。
```java
public class Cat extends Animal {
public Cat(String name, int age) {
super(name, age);
}
public void catchMouse() {
System.out.println(super.getName() + " is catching mice.");
}
}
```
3. 定义 Dog 类,继承自 Animal 类,并实现特有方法 bark()。
```java
public class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
public void bark() {
System.out.println(super.getName() + " is barking.");
}
}
```
4. 测试代码,创建 Cat 和 Dog 对象,并调用各自的方法。
```java
public class Test {
public static void main(String[] args) {
Cat cat = new Cat("Tom", 2);
cat.eat();
cat.sleep();
cat.catchMouse();
Dog dog = new Dog("Max", 3);
dog.eat();
dog.sleep();
dog.bark();
}
}
```
运行结果:
```
Tom is eating.
Tom is sleeping.
Tom is catching mice.
Max is eating.
Max is sleeping.
Max is barking.
```
5. 实现多态,定义一个方法 play(Animal animal),该方法可以接受 Animal 类型的对象作为参数,并调用 eat() 和 sleep() 方法。
```java
public class Test {
public static void main(String[] args) {
Cat cat = new Cat("Tom", 2);
Dog dog = new Dog("Max", 3);
play(cat);
play(dog);
}
public static void play(Animal animal) {
animal.eat();
animal.sleep();
}
}
```
运行结果:
```
Tom is eating.
Tom is sleeping.
Max is eating.
Max is sleeping.
```
通过继承和多态的机制,我们可以方便地扩展已有的类,并实现代码的复用和灵活性。
阅读全文