1、 定义一个抽象类Fruit(水果),有两个属性名称和单价;有带参构造器;有抽象方法 void eat(); 重写toString方法。 定义两个子类 Apple(苹果), Orange(橘子),Apple 中重写eat 输出"苹果削皮吃",Orange 中重写 eat 输出 "橘子剥皮吃" 定义测试类,在 main 方法中 声明长度为 4 的 Fruit 数组, 向数组中填入子类对象, 遍历输出信息并调用eat方法。
时间: 2023-06-12 14:05:12 浏览: 149
抽象类及接口的实例及测试
5星 · 资源好评率100%
抽象类 Fruit 的代码如下:
```java
public abstract class Fruit {
private String name;
private double price;
public Fruit(String name, double price) {
this.name = name;
this.price = price;
}
public abstract void eat();
@Override
public String toString() {
return "Fruit{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
```
Apple 类和 Orange 类代码如下:
```java
public class Apple extends Fruit {
public Apple(String name, double price) {
super(name, price);
}
@Override
public void eat() {
System.out.println("苹果削皮吃");
}
}
public class Orange extends Fruit {
public Orange(String name, double price) {
super(name, price);
}
@Override
public void eat() {
System.out.println("橘子剥皮吃");
}
}
```
测试类的代码如下:
```java
public class TestFruit {
public static void main(String[] args) {
Fruit[] fruits = new Fruit[4];
fruits[0] = new Apple("红富士", 5.0);
fruits[1] = new Orange("橙子", 3.0);
fruits[2] = new Apple("青苹果", 4.0);
fruits[3] = new Orange("柚子", 6.0);
for (Fruit fruit : fruits) {
System.out.println(fruit.toString());
fruit.eat();
}
}
}
```
输出结果为:
```
Fruit{name='红富士', price=5.0}
苹果削皮吃
Fruit{name='橙子', price=3.0}
橘子剥皮吃
Fruit{name='青苹果', price=4.0}
苹果削皮吃
Fruit{name='柚子', price=6.0}
橘子剥皮吃
```
阅读全文