设计一个基类Bird和一个子类Sparrow(麻雀)。基类有一个方法fly,子类应该能够替换基类对象而不影响程序的正确性。现在要求为Sparrow类添加一个特定的飞行方式。
时间: 2024-12-01 09:29:10 浏览: 11
浅谈C++ 基类指针和子类指针的相互赋值
设计一个基于继承的多态示例,首先我们创建一个名为`Bird`的基类,其中包含一个通用的`fly()`方法:
```java
public class Bird {
public void fly() {
System.out.println("鸟正在飞翔");
}
}
```
然后,我们为这个`Bird`类创建一个子类`Sparrow`,即麻雀,并在此基础上覆盖`fly()`方法以体现其特定的飞行方式:
```java
public class Sparrow extends Bird {
@Override
public void fly() {
System.out.println("麻雀振翅高飞,特有的飞行模式");
}
// 可能有的特定飞行方式,如"跳跃式飞翔"
public void specialFlight() {
System.out.println("麻雀采用跳跃式飞翔技巧");
}
}
```
现在,如果你有一个`Bird`类型的引用,并且想让它的实例执行`Sparrow`特有的飞行方式,你可以这样做:
```java
public static void main(String[] args) {
Bird bird = new Sparrow(); // 创建了一个Sparrow对象
bird.fly(); // 调用的是Sparrow类的fly方法
bird.specialFlight(); // 因为bird实际上是Sparrow,所以可以访问特殊飞行方法
}
```
通过这种方式,`Sparrow`子类可以在不改变`Bird`类结构的情况下,提供独特的飞行行为,体现了多态的优势。
阅读全文