关于类和对象的基本区别
我将以我如今的知识来归纳一二
一、定义
1.类的定义
类(class)就是某类事物,其中包含着它这个类的共同特征(属性)和行为(方法)。
例如:学生类的属性(名字,年龄等),方法(学习等)
// 类的定义:学生类(新手模板) public class Student { // 属性:特征 String name; int age; // 方法:行为 public void study() { System.out.println(name + "正在学习"); } }2.对象的定义
对象是类的实现,例如:学生A,年龄17,学习什么什么,这个就是对象。你有一个类就可以创建多个对象。
例如:同上类对应的
public class Test { public static void main(String[] args) { // 创建对象:类的具体实例 Student stu = new Student(); // 给对象赋值 stu.name = "张三"; stu.age = 18; // 调用对象方法 stu.study(); // 输出:张三正在学习 } }二、类与对象的核心特性
1.类的特性
构造方法(对象初始化的灵魂)
作用:创建对象时自动给属性赋值,不用写完
new再一行行赋值。分类:无参构造(默认存在)、有参构造(简化赋值)、重载构造(适配不同初始化场景);
补充:创建有参构造后无参构造将不复存在!得再添加一个无参构造
访问控制(封装的核心手段)
核心修饰符:
private(仅本类访问)、public(全局访问)、protected(子类 / 同包访问)、默认(同包访问);- 最佳实践:属性私有化(
private)+ 提供get/set方法(加校验逻辑),比如给age属性加校验,拒绝负数 / 超龄值; - 博客案例:对比 “裸属性直接访问” 和 “封装后访问” 的安全性,体现面向对象的封装思想。
静态成员(类级别的共享资源)
- 静态属性(类变量):所有对象共享,比如
Student.school = "北京大学",所有学生对象的学校都是这个值,修改后全局生效; - 静态方法(类方法):无需创建对象,直接通过类名调用(如
Math.random()),适合工具类(如DateUtil); - 注意点:静态方法不能直接访问非静态成员(因为静态属于类,非静态属于对象)。内部类(类的嵌套设计)
内部类(类的嵌套设计)
- 分类:成员内部类、局部内部类、匿名内部类(高频)、静态内部类;
- 实战场景:匿名内部类简化接口实现(如
new Runnable(){...}),静态内部类解决外部类的逻辑拆分(如HashMap.Node)。
2.对象的特性
实例化性:
对象必须通过new类名()语法创建,是类在内存中的具体落地,没有实例化的类无法直接提供业务功能。
独立性:
每个对象在堆内存中拥有独立的存储空间,修改一个对象的属性值不会影响其他同类型对象,体现了实例的 “个体差异”。
可操作性:
对象创建后,可通过对象名.属性访问数据、对象名.方法名()调用行为,是面向对象编程中直接操作的最小单元。
生命周期性:
对象从new关键字触发创建(分配内存、执行构造方法初始化),到被引用变量操作,最终在无有效引用指向时,由 Java 垃圾回收器(GC)自动回收销毁,无需手动释放内存。
三、总结
类和对象的区别还是非常大的。
类是面向对象编程的 “设计蓝图”,通过封装、静态成员等特性定义一类事物的通用规则;
对象是蓝图落地的 “实物”,依托实例化、独立性等特性,将类的共性规则转化为具体的业务场景。
理解二者的核心区别与特性,是掌握 Java 面向对象思想的基础。
