http://www.verejava.com/?id=16992784958543
/**
知识点: 对象数组
1. 对象数组的使用
2. 对象数组的foreach 增强for循环
3. 可变参数
题目:乘客一次只能带2个箱子免费上飞机
思路:
1. 抽象出类 乘客(Customer) , 箱子(Box)
2. 乘客和箱子的关系 1对2的关系 Box->Customer
*/
public class ObjectArray {
public static void main(String[] args) {
//实例化一个乘客
Customer c = new Customer("黎明");
//实例化两个箱子一个装衣服, 一个装书
Box clothBox = new Box("装衣服");
clothBox.setId(1);
clothBox.setWeight(20);
Box bookBox = new Box("装书");
bookBox.setId(2);
bookBox.setWeight(30);
//将箱子添加到乘客
c.addBox(clothBox);
c.addBox(bookBox);
//打印该乘客的信息
System.out.println("乘客姓名: " + c.getName());
System.out.println("箱子编号, 箱子重量, 箱子描述");
Box[] boxes = c.getBoxes();
for (Box box : boxes) {
System.out.println(box.getId() + "," + box.getWeight() + "," + box.getDescription());
}
//测试可变参数
Box[] boxes2 = { clothBox, bookBox };
c.setBoxes();//不传参数
c.setBoxes(clothBox);//传一个参数
c.setBoxes(boxes2);//传一个数组
boxes = c.getBoxes();
for (Box box : boxes) {
System.out.println(box.getId() + "," + box.getWeight() + "," + box.getDescription());
}
}
}
class Customer {
private String name;//乘客名字
private Box[] boxes = new Box[2];//箱子属于乘客, 添加箱子引用
public Customer(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Box[] getBoxes() {
return this.boxes;
}
//乘客携带添加的箱子
//返回值: 如果添加成功返回true 否则false
public boolean addBox(Box box) {
for (int i = 0; i < boxes.length; i++) {
if (boxes[i] == null) {
boxes[i] = box;
return true;
}
}
return false;
}
public void setBoxes(Box... boxes) {
this.boxes = boxes;
}
}
class Box {
private float weight;//箱子的重量
private int id;//箱子的编号
private String description;//描述
public Box(String description) {
this.description = description;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public float getWeight() {
return this.weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
}