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) 会自动回收内存。
相关推荐
C++、Java和Python的菜鸟20 分钟前
第7章 Java高级技术
java·开发语言
程序员佳佳30 分钟前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
geovindu1 小时前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
Listen·Rain2 小时前
Springboot整合Ollama实现调用本地多模型
java·spring boot·后端
霸道流氓气质2 小时前
Java 工程师 AI 智能体(Agent)完整学习路线
java·人工智能·学习
aaPIXa6222 小时前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
SunnyDays10112 小时前
Java 编辑 PDF:从增删改查到加密保护
java·修改 pdf·编辑 pdf
张三丰22 小时前
Agent 不只是聊天框:用 ArkUI 做一个鸿蒙任务工作台
后端
卷无止境2 小时前
从Python的cryptography库出发,从零开始理解密码学,到构建零信任网络
后端·python
Augustzero2 小时前
`co_await` 按下暂停键之后:从零看懂 C++20 协程
c++·后端