分析以下代码package practice4_1; class Fruit { public void disp() { System.out.println("我是水果"); } } class Apple extends Fruit { public void disp() { System.out.println("我是苹果"); } } class Banana extends Fruit { public void disp() { System.out.println("我是香蕉"); } } public class Fruitcal { public static void main(String[] args) { Fruit fruit1 = new Fruit(); Fruit fruit2 = new Apple(); Fruit fruit3 = new Banana(); fruit1.disp(); // 输出:我是水果 fruit2.disp(); // 输出:我是苹果 fruit3.disp(); // 输出:我是香蕉 } }
时间: 2024-02-14 19:16:49 浏览: 108
java 中 System.out.println()和System.out.write()的区别
这段代码定义了一个Fruit类和两个子类Apple和Banana,其中Fruit类有一个disp方法,输出“我是水果”的字符串。Apple类和Banana类分别继承了Fruit类,并且重写了disp方法,输出“我是苹果”和“我是香蕉”的字符串。
在主函数main中,分别创建了三个Fruit类的对象fruit1、fruit2和fruit3,其中fruit1是Fruit类的对象,fruit2和fruit3分别是Apple类和Banana类的对象,但是它们的类型都是Fruit类。调用这三个对象的disp方法,由于Java中的动态绑定机制,fruit1、fruit2和fruit3实际上都调用了它们自己类中的disp方法,输出的结果分别为:
```
我是水果
我是苹果
我是香蕉
```
这段代码体现了多态的思想,通过父类引用指向子类对象,实现了对不同子类对象的统一操作。在调用disp方法时,由于它是一个虚方法,实际调用的是对象所属类中的重写方法。这种机制使得代码更加灵活,可以根据实际需要进行动态调用,同时也更加符合OOP的封装、继承和多态的特性。
阅读全文