Java 面向对象 之 对象数组

简介:

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;
    }

}

http://www.verejava.com/?id=16992784958543

目录
相关文章
|
1天前
|
存储 Java 开发工具
【Java探索之旅】用面向对象的思维构建程序世界
【Java探索之旅】用面向对象的思维构建程序世界
9 0
|
1天前
|
存储 Java C语言
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
10 0
|
1天前
|
Java 索引
JAVA刷题之数组的总结和思路分享
JAVA刷题之数组的总结和思路分享
|
2天前
|
安全 Java 编译器
Java面向对象思想以及原理以及内存图解(下)
Java面向对象思想以及原理以及内存图解(下)
9 0
|
2天前
|
Java
Java面向对象思想以及原理以及内存图解(上)
Java面向对象思想以及原理以及内存图解
9 0
|
6天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
6天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
10 0
|
6天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
6天前
|
设计模式 存储 Java
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式
|
6天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型]对象的间接访问——代理模式
[设计模式Java实现附plantuml源码~结构型]对象的间接访问——代理模式