package notebook; class Fruit{ public Fruit() { System.out.println("fruit"); } } class Apple extends Fruit{ public Apple(){ } public Apple(String s) { System.out.println("apple"); } } class Mcintosh extends Apple{ public Mcintosh() { System.out.println("mcintosh"); } } public class chouxiang { public static void main(String[] args) { // TODO Auto-generated method stub Fruit fruit = new Mcintosh(); } } 什么意思
时间: 2024-04-11 22:28:27 浏览: 159
这段代码定义了一个包名为`notebook`的Java类。在这个类中,有一个`Fruit`类和它的子类`Apple`,还有`Apple`的子类`Mcintosh`。`Fruit`类有一个无参构造方法,用于输出字符串"fruit"。`Apple`类继承自`Fruit`类,它有一个无参构造方法和一个带有字符串参数的构造方法,其中无参构造方法为空,而带有字符串参数的构造方法输出字符串"apple"。`Mcintosh`类继承自`Apple`类,它有一个无参构造方法,用于输出字符串"mcintosh"。
在`chouxiang`类的`main`方法中,创建了一个`Fruit`类型的对象`fruit`,并实例化为`Mcintosh`类的对象。这是因为多态性的特性,父类类型的引用可以指向子类类型的对象。当创建对象时,会先调用父类的构造方法,再调用子类的构造方法。所以在输出结果中,首先会打印出"fruit",然后打印出"mcintosh"。
所以,输出结果为:
```
fruit
mcintosh
```
相关问题
public class Fruit { String name; String color; int size; void eat() { System.out.println("It is delicious."); } void make() { System.out.println("apple pan."); } void use() { System.out.println("物种--" + name); System.out.println("颜色--" + color); System.out.println("尺寸--" + size); } } class Test { public static void main(String[] args) { Fruit apple = new Fruit(); apple.name = "苹果"; apple.color = "可红可青"; apple.size = 7; apple.use(); apple.eat(); apple.make(); } }
这段代码是一个Java程序,定义了一个Fruit类和一个Test类。Fruit类包含了三个属性:水果名称(name)、颜色(color)和尺寸(size),以及三个方法:吃(eat)、制作(make)和使用(use)。Test类包含了一个main方法,用于创建一个Fruit对象(apple),并为其属性赋值,最后调用对象的方法输出相关信息。具体来说,输出了苹果的物种、颜色、尺寸,以及吃和制作的相关信息。
分析以下代码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(); // 输出:我是香蕉 } }
这段代码定义了一个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的封装、继承和多态的特性。
阅读全文