面向对象编程是java中new、tostring()、nullpointerexception背后的实际规则;类为模板约束对象生命期与行为,对象为独立实例共享类字节码;static方法不可访问非static成员;封装需校验setter而非仅private字段。
Java 里的面向对象编程不是一套要背的概念清单,而是你写 new、调用 toString()、被 NullPointerException 抓到时,背后实际起作用的那套规则。
类和对象到底谁依赖谁
类是模板,对象是实例——这句话没错,但容易让人忽略关键点:对象的生命期、内存布局、方法绑定全由类定义约束。你声明一个 Student 类,哪怕没 new 出任何对象,JVM 已加载其字节码、静态字段和 static 块;而每个 new Student() 都在堆上分配独立字段空间,但共享同一份方法区中的字节码。
常见误操作:
- 在
static方法里直接访问非static字段或方法(编译报错:non-static variable xxx cannot be referenced from a static context) - 以为
new多次就等于“复制了逻辑”,其实只是复用类中定义的行为,字段值彼此隔离
封装不是“private 一下就完事”
private 是起点,不是终点。真正的封装体现在:是否允许外部绕过你的控制逻辑修改状态?比如一个 BankAccount 类把 balance 设为 private,但如果提供 setBalance(double b) 且不做校验,那和公开字段没本质区别。
立即学习“Java免费学习笔记(深入)”;
实操建议: