55. Java 类和对象 - 了解什么是对象

55. Java 类和对象 - 了解什么是对象

在 Java 编程中,对象是程序运行的核心。典型的 Java 程序会创建许多对象,这些对象通过调用方法相互交互。通过这些交互,程序可以完成各种任务,比如实现图形用户界面 (GUI)、运行动画、或者通过网络发送和接收信息。


📦 创建对象示例

让我们来看一个名为 CreateObjectDemo 的小程序,它创建了三个对象:

  • 一个 Point 对象
  • 两个 Rectangle 对象

我们先看代码,然后逐步拆解:

java 复制代码
public class CreateObjectDemo {

    public static void main(String[] args) {
        // 创建一个 Point 对象和两个 Rectangle 对象
        Point originOne = new Point(23, 94);
        Rectangle rectOne = new Rectangle(originOne, 100, 200);
        Rectangle rectTwo = new Rectangle(50, 100);

        // 输出 rectOne 的宽度、高度和面积
        System.out.println("Width of rectOne: " + rectOne.width);
        System.out.println("Height of rectOne: " + rectOne.height);
        System.out.println("Area of rectOne: " + rectOne.getArea());

        // 设置 rectTwo 的起点
        rectTwo.origin = originOne;

        // 输出 rectTwo 的起点坐标
        System.out.println("X Position of rectTwo: " + rectTwo.origin.x);
        System.out.println("Y Position of rectTwo: " + rectTwo.origin.y);

        // 移动 rectTwo 并输出它的新坐标
        rectTwo.move(40, 72);
        System.out.println("X Position of rectTwo: " + rectTwo.origin.x);
        System.out.println("Y Position of rectTwo: " + rectTwo.origin.y);
    }
}

Point 类

java 复制代码
public class Point {
    public int x = 0;
    public int y = 0;

    // 构造器
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}

Rectangle 类

java 复制代码
public class Rectangle {
    public int width = 0;
    public int height = 0;
    public Point origin;

    // 四个构造器
    public Rectangle() {
        origin = new Point(0, 0);
    }

    public Rectangle(Point p) {
        origin = p;
    }

    public Rectangle(int w, int h) {
        origin = new Point(0, 0);
        width = w;
        height = h;
    }

    public Rectangle(Point p, int w, int h) {
        origin = p;
        width = w;
        height = h;
    }

    // 移动矩形
    public void move(int x, int y) {
        origin.x = x;
        origin.y = y;
    }

    // 计算矩形面积
    public int getArea() {
        return width * height;
    }
}

🚀 程序执行过程解析

🌟 对象的创建

  1. 创建 Point 对象

    java 复制代码
    Point originOne = new Point(23, 94);
    • 调用 Point 类的构造方法,创建一个坐标为 (23, 94) 的点对象。
  2. 创建 Rectangle 对象 rectOne

    java 复制代码
    Rectangle rectOne = new Rectangle(originOne, 100, 200);
    • 使用 Rectangle 类的构造方法,创建一个以 originOne 为起点、宽 100 高 200 的矩形对象。
  3. 创建 Rectangle 对象 rectTwo

    java 复制代码
    Rectangle rectTwo = new Rectangle(50, 100);
    • 这是使用宽高参数的构造方法,起点默认为 (0, 0)。

🔄 对象的交互

  • 更改 rectTwo 的起点为 originOne

    java 复制代码
    rectTwo.origin = originOne;

    两个矩形现在共享同一个起点对象 (23, 94)。

  • 移动 rectTwo 到新位置 (40, 72)

    java 复制代码
    rectTwo.move(40, 72);

    调用 move() 方法后,rectTwo 的起点被更新,但由于 originOne 是共享的,rectOne 的起点也随之变化!

🏁 输出结果

yaml 复制代码
Width of rectOne: 100
Height of rectOne: 200
Area of rectOne: 20000
X Position of rectTwo: 23
Y Position of rectTwo: 94
X Position of rectTwo: 40
Y Position of rectTwo: 72

🧹 对象的生命周期

  1. 创建阶段
    • 通过 new 关键字调用构造方法,分配内存并初始化对象。
  2. 使用阶段
    • 通过方法调用、字段访问等与对象交互。
  3. 销毁阶段
    • 当对象不再被引用时,Java 的垃圾回收器 (GC) 会自动回收内存。
相关推荐
2301_780789662 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设3 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
滴滴答答哒3 小时前
ASP.NET Core + FaceRecognitionDotNet 人脸识别实战:DI 单例、特征向量持久化与 1:N 比对
后端·asp.net
步行cgn3 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川3 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵3 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David4 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1004 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin5 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质5 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring