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

目录
相关文章
|
2月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
278 0
|
4月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
3月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
145 1
|
3月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
4月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
3月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
125 0
|
4月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
4月前
|
存储 人工智能 JavaScript
Java从作用域到对象高级应用​
本内容详细讲解了JavaScript中的作用域类型(函数作用域、块作用域、全局作用域)、作用域链、垃圾回收机制、闭包、变量提升、函数参数、数组方法、内置构造函数、对象高级知识、原型链、对象赋值、深浅拷贝、递归、异常处理及this指向等内容,全面覆盖JS核心概念与编程技巧。
54 0
|
5月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。