问题:有一个水果箱(Box),箱子里装有水果(Fruit),每一种水果都有不同的重量和颜色,水果有:苹果、梨、桔子。每个苹果(Apple)都有不同的重量和颜色,每个桔子(Orange)都有不同的重量和颜色。
思路:
1)首先要有一Fruit父类,及其3个子类Apple、Pear、Orange。
a、Fruit父类的属性:color、weight;
显示信息方法:改写toString方法使其返回水果名(getClass().getName())、重量、颜色的字符串。
b、子类Apple、Pear、Orange只需完善带参构造进行赋值。(子类构造方法首先进行父类构造super())。
2)Box类:
声明一个ArrayList来存水果对象;
void addFruit(Fruit f);
Fruit getFruit()取出水果并打印其信息(调用toString())。
3)Test测试类(主方法):
实例化Box、Apple、Pear、Orange;
然后调用Box的addFruit(),getFruit()方法。
截图:
代码:
package fruitBox;
public class Fruit {
String color;//属性
double weight;
public Fruit(){
}
public String toString(){//显示信息的方法
return "水果:"+getClass().getName()+"重量:"+weight+"颜色:"+color;
}
```}package fruitBox;
public class Apple extends Fruit{
public Apple(String color, double weight) {//带参构造
super();//父类构造
this.color=color;//赋值
this.weight=weight;
}
}
package fruitBox;
public class Pear extends Fruit{
public Pear(String color, double weight) {//带参构造
super();//父类构造
this.color=color;//赋值
this.weight=weight;
}
}
package fruitBox;
public class Orange extends Fruit{
public Orange(String color, double weight) {//带参构造方法
super();//父类构造
this.color=color;//赋值
this.weight=weight;
}
}
package fruitBox;
import java.util.*;
public class Box {
ArrayList<Fruit>arraylist=new ArrayList<Fruit>();//容器
public void addFruit(Fruit f){//add方法传的参数是Fruit对象
arraylist.add(f);
}
public Fruit getFruit(){
Fruit fruit=arraylist.get(arraylist.size()-1);//用一个Fruit对象接收获取的是最后放进去的那个
System.out.println(fruit.toString());//接收完然后打印调用toString方法
return null;
}
}
package fruitBox;
public class Test {
public static void main(String[] args) {
Box box=new Box();//实例化对象
Apple apple=new Apple("red",1.2);
Pear pear=new Pear("Green",0.2);
Orange orange=new Orange("yellow",0.3);
box.addFruit(apple);//添加
box.getFruit();//打印
box.addFruit(pear);
box.addFruit(orange);
box.getFruit();
}
}