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 为起点、宽 100200 的矩形对象。
  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) 会自动回收内存。
相关推荐
欧恩意3 小时前
【Tools】Java反汇编工具推荐
java·汇编
苍何3 小时前
字节发力,豆包大模型2.0 震撼来袭(附 Trae 实测)
后端
苍何3 小时前
不会剪辑的人,开始用 AI 批量出爆款了
后端
苍何3 小时前
百度 APP 正式接入 OpenClaw,所有人限时免费!
后端
寻星探路3 小时前
【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机
java·开发语言·jvm·人工智能·python·算法·ai
lbb 小魔仙3 小时前
【Java】Java 实战项目:手把手教你写一个电商订单系统
android·java·python
星河耀银海3 小时前
Java安全开发实战:从代码防护到架构安全
java·安全·架构
青云交3 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市水资源管理与节水策略制定中的应用
java·java 大数据·java 大数据可视化·城市水资源管理·spark 数据清洗·echarts 热力图·管网漏损控制
紫陌涵光4 小时前
112. 路径总和
java·前端·算法
workflower4 小时前
多变量时间序列预测
java·hadoop·nosql·需求分析·big data·结对编程