有一般的人 (Human),有共有的动作行为能吃 (eat),能睡 (sleep),默认行为中分别显 示”Human eat” 和”Human sleep”,广义上的人是不能实例化的。 两种人,超人 (Superman) 和凡人 (Mortal),都具有人的行为特点。 除此之外,超人往往具有一项或多项特殊技能,比如会飞翔(fly),凡人更擅长于做梦(dream) 会飞的不一定就是超人,有好多事物都具有会飞的属性 (flyable),大鸟 (eagle) 也能飞。 根据以上描述定义如下类层次结构: 1. 定义一般的人 (Human) ,描述人所共有的动作行为 2. 定义能做梦 (Dreamable) 和能飞 (Flyable) 的行为物体行为类型 (请思考如何实现) 3. 分别定义超人类 (Superman)、凡人类 (Mortal),大鸟类 (Eagle) 4. 定义一测试类 Test,在主方法中构建凡人对象一,并构建一个会飞的对象数组,其中包含 一个大鸟对象和一位超人对象,并分别打印当前凡人的状态,数组中各对象的状态 注意,打印对象的状态,通过直接打印对象实现,如有 Superman 对象 spm,通过调用 System.out.println(spm) 就能打印出其现在所属的状态,正在飞。
时间: 2024-03-05 20:50:37 浏览: 192
好的,你的问题是关于一个类层次结构的定义。这里给出一个 Java 代码示例:
```java
// 定义人类,具有基本的吃和睡行为
class Human {
public void eat() {
System.out.println("Human eat");
}
public void sleep() {
System.out.println("Human sleep");
}
}
// 定义可以做梦的行为物体
interface Dreamable {
public void dream();
}
// 定义可以飞行的行为物体
interface Flyable {
public void fly();
}
// 定义超人类,继承自人类,具有飞行技能
class Superman extends Human implements Flyable {
public void fly() {
System.out.println("Superman fly");
}
}
// 定义凡人类,继承自人类,具有做梦技能
class Mortal extends Human implements Dreamable {
public void dream() {
System.out.println("Mortal dream");
}
}
// 定义大鸟类,实现飞行接口
class Eagle implements Flyable {
public void fly() {
System.out.println("Eagle fly");
}
}
// 测试类
public class Test {
public static void main(String[] args) {
// 构建凡人对象
Mortal mortal = new Mortal();
mortal.eat();
mortal.sleep();
mortal.dream();
// 构建会飞的对象数组
Flyable[] flyables = new Flyable[] {new Eagle(), new Superman()};
// 打印数组中各对象的状态
for (Flyable f : flyables) {
if (f instanceof Eagle) {
System.out.println("This is an Eagle.");
} else if (f instanceof Superman) {
System.out.println("This is a Superman.");
}
f.fly();
}
}
}
```
注意,在 `Test` 类的 `main` 方法中,我们首先构建了一个凡人对象 `mortal`,并调用了其吃、睡、做梦的方法。然后,我们构建了一个会飞的对象数组 `flyables`,其中包含一个大鸟对象和一个超人对象。我们通过遍历数组中的每个元素,并使用 `instanceof` 运算符判断其类型,来打印数组中各对象的状态。最后,我们调用每个对象的飞行方法。
阅读全文