java 设计一个动物类,包含一些动物的属性,如名称、重量等:动物可以叫。然后设计一个鸟类和一个狗类,它们除了继承动物的特性外,鸟有翅膀,可以飞;狗有腿,可以跑。编写测试来测试鸟类和狗类。
时间: 2024-10-17 14:11:53 浏览: 49
在Java中,我们可以创建一个简单的类体系来演示多态的概念。首先,我们定义一个`Animal`作为基类,包含通用的属性和行为:
```java
public class Animal {
private String name;
private double weight;
// 构造函数
public Animal(String name, double weight) {
this.name = name;
this.weight = weight;
}
// 共享的行为
public void call() {
System.out.println("The animal makes a sound.");
}
}
```
接着,我们创建两个派生类:`Bird`和`Dog`,它们分别继承自`Animal`并添加特有的属性和行为:
```java
public class Bird extends Animal {
private int wingspan;
// 构造函数
public Bird(String name, double weight, int wingspan) {
super(name, weight);
this.wingspan = wingspan;
}
@Override
public void call() {
System.out.println("The bird chirps.");
}
// 特有的行为
public void fly() {
System.out.println("The bird flies with a wingspan of " + wingspan + "cm.");
}
}
public class Dog extends Animal {
private int legCount;
// 构造函数
public Dog(String name, double weight, int legCount) {
super(name, weight);
this.legCount = legCount;
}
@Override
public void call() {
System.out.println("The dog barks.");
}
// 特有的行为
public void run() {
System.out.println("The dog runs on " + legCount + " legs.");
}
}
```
最后,我们通过测试来展示多态性:
```java
public class Main {
public static void main(String[] args) {
Animal animal1 = new Bird("Eagle", 5, 200); // 创建鸟实例
Animal animal2 = new Dog("Rex", 40, 4); // 创建狗实例
animal1.call(); // 输出"The bird chirps."
animal1.fly(); // 输出"The bird flies with a wingspan of 200cm."
animal2.call(); // 输出"The dog barks."
animal2.run(); // 输出"The dog runs on 4 legs."
// 通过Animal引用调用方法,体现多态
animal1.run(); // 狗会运行,因为这里是Animal类型的引用
animal2.fly(); // 动物无法飞行,这里会产生异常或默认行为
}
}
```
在这个例子中,`animal1`和`animal2`都是`Animal`类型的引用,但是由于动态绑定(dynamic dispatch),当我们调用`run()`和`fly()`方法时,实际执行的是各自类中对应的实现。
阅读全文