不同地方饮食文化不同的案例实现向上转型和向下转型Person • eat() • SouthPerson • eat() • NorthPerson • eat()
时间: 2024-11-20 12:37:31 浏览: 4
在这个例子中,我们可以用面向对象的方式描述饮食文化和向上/向下转型的概念。让我们创建一个名为 `Person` 的基本类,代表一个人,以及两个子类 `SouthPerson` 和 `NorthPerson`,分别表示南北方的人,他们都拥有 `eat()` 方法来体现各自的饮食习惯。
```java
class Person {
public void eat() {
System.out.println("这个人吃饭");
}
}
class SouthPerson extends Person {
@Override
public void eat() {
System.out.println("南方人吃米饭");
}
}
class NorthPerson extends Person {
@Override
public void eat() {
System.out.println("北方人吃面食");
}
}
// 这里是向上转型的例子
Person generalDiner = new SouthPerson(); // 南方人
generalDiner.eat(); // 输出 "南方人吃米饭"
// 下向转型示例
SouthPerson southernDiner = (SouthPerson) generalDiner; // 将一般Diner强制转换为SouthPerson
southernDiner.eat(); // 输出 "南方人吃米饭",因为向下转型后可以直接调用特有的 `eat` 方法
// 如果尝试向下转型错误类型,会出错
Person northernDiner = new NorthPerson();
try {
NorthPerson northerner = (NorthPerson) northernDiner; // 编译错误,因为不是 SouthPerson
} catch (ClassCastException e) {
e.printStackTrace();
}
```
阅读全文