类是模板,对象是实例;类是抽象蓝图,不占内存,定义属性和方法;对象是具体实体,运行时用new创建,独占堆内存,具有真实状态和行为。

类是模板,对象是实例——这是最本质的区别。类定义了“能做什么”和“长什么样”,对象则是根据这个定义实际创建出来的、有具体状态和行为的个体。
类:抽象的蓝图
类是一种自定义的数据类型,它封装了属性(字段)和行为(方法),用来描述一类事物的共同特征。它本身不占用内存空间,只是为创建对象提供结构和规则。
定义类使用 class 关键字,例如:
public class Person {
String name;
int age;
void speak() {
System.out.println("Hello, I'm " + name);
}
}
立即学习“Java免费学习笔记(深入)”;
这个 Person 类没有具体的人,只有名字、年龄两个属性,以及一个说话的方法。它不能直接执行操作,也不能被赋值或打印。
对象:具体的实体
对象是类的实例,是在运行时通过 new 关键字创建出来的,拥有独立的内存空间、真实的数据值和可调用的行为。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
创建对象分两步:
- 声明引用变量(如 Person p;),这仅分配栈空间,不产生对象
- 使用 new Person() 在堆中分配内存并初始化,然后将地址赋给引用变量
完整写法示例:
Person p = new Person();
p.name = "Alice";
p.age = 25;
p.speak(); // 输出:Hello, I'm Alice
每次调用 new Person() 都会生成一个新对象,彼此状态互不影响。
关键区别总结
- 存在形式:类是源代码中的静态定义;对象是程序运行时动态产生的实体
- 内存分配:类不占堆内存;每个对象在堆中独占一块内存区域
- 数量关系:一个类可以创建任意多个对象;一个对象只能属于一个类(不考虑继承时)
- 使用方式:类用于定义、组织和复用;对象用于交互、计算和传递
常见创建方式补充
除了最常用的 new 方式,Java 还支持其他创建对象的途径:
- 反射:Class.forName("Person").newInstance() —— 运行时动态加载并实例化
- 克隆:调用对象的 clone() 方法(需实现 Cloneable 接口)
- 反序列化:从文件或网络流中恢复对象(ObjectInputStream.readObject)
- 工厂方法或构造器模式:通过静态方法隐藏 new 细节,提升灵活性
这些方式最终仍依赖类的构造逻辑,只是控制权交给了不同机制。

















