请定义一个水果类Fruit(作为基类),并在该类中定义一个类属性(用于保存水果默认的颜色color, 设置为绿色)和一个harvest()方法(输出 水果是:color的、水果已经收获······ 、水果原来是:color的),然后创建Apple类和Orange类,都继承自Fruit类(并修改color分别为红色、橙色),最后创建Apple类和Orange类的实例,并调用harvest()方法(在基类中编写)。
时间: 2024-02-12 20:06:47 浏览: 129
C#抽象类与抽象方法
5星 · 资源好评率100%
好的,我来编写代码:
```java
public class Fruit {
protected static String color = "绿色";
public void harvest() {
System.out.println("水果是:" + color + "的、水果已经收获······、水果原来是:" + color + "的");
}
}
public class Apple extends Fruit {
static {
color = "红色";
}
}
public class Orange extends Fruit {
static {
color = "橙色";
}
}
```
在Apple和Orange类中使用static代码块来修改color属性的值,因为static代码块在类加载时就会被执行,所以可以在修改color属性之前就调用父类的harvest()方法。
创建Apple和Orange类的实例,并调用harvest()方法:
```java
Apple apple = new Apple();
apple.harvest(); // 输出:水果是:红色的、水果已经收获······、水果原来是:红色的
Orange orange = new Orange();
orange.harvest(); // 输出:水果是:橙色的、水果已经收获······、水果原来是:橙色的
```
注意:由于color属性是类属性,因此所有的Apple和Orange实例都共享同一个color属性。如果想让每个实例都有自己的颜色属性,应该将color属性改为实例属性。
阅读全文