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) 会自动回收内存。
相关推荐
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
C雨后彩虹3 小时前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
java1234_小锋4 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
2501_944525544 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
计算机学姐4 小时前
基于SpringBoot的电影点评交流平台【协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·spring·信息可视化·echarts·推荐算法
Filotimo_4 小时前
Tomcat的概念
java·tomcat
索荣荣5 小时前
Java Session 全面指南:原理、应用与实践(含 Spring Boot 实战)
java·spring boot·后端
Amumu121385 小时前
Vue Router(二)
java·前端
念越5 小时前
数据结构:栈堆
java·开发语言·数据结构