Java OOP是围绕“如何组织代码与数据”形成的统一思维框架,需打通类、对象、封装、继承、多态的逻辑链:从Student类实践属性/方法/构造器;用private+getter/setter实现可控封装;通过Animal父类与Dog/Cat子类理解继承复用、重写定制和多态解耦;借助static(类共享)与this(实例专属)厘清作用域边界。

Java 面向对象(OOP)不是一堆零散概念的堆砌,而是围绕“如何组织代码与数据”形成的统一思维框架。复习的关键不在于背定义,而在于打通类、对象、封装、继承、多态之间的逻辑链条,并在写代码中自然体现出来。
从一个真实类开始,串起类与对象的完整生命周期
别一上来就啃抽象概念。选一个贴近生活的类(比如 Student 或 Book),动手写:定义属性(String name; int age;)、方法(void study())、构造方法(Student(String name, int age)),再用 new Student("张三", 19) 创建对象,通过点号调用。重点体会:
– 成员变量属于对象,每个对象一份;
– 构造方法只在 new 时执行一次,负责初始化;
– 没有类,就没有对象;没有对象,成员变量和非 static 方法无法被使用。
用封装解决“谁该改、谁不该看”的实际问题
把属性全改成 private,立刻会发现外部不能直接赋值了——这正是封装的第一步。接着补上 getName() 和 setName(String name)。在 setName 里加校验:
– 如果传入负数年龄,就拒绝设置;
– 如果名字为空字符串,就抛异常或设默认值。
这样你就明白了:封装不是“锁起来”,而是“把控制权收回来”,让数据变更变得可控、可追踪。别忘了用 this.name = name; 区分形参和成员变量。
用继承+重写还原“共性与个性”的设计场景
先写一个父类 Animal(含抽象方法 sound() 和普通方法 eat()),再写两个子类 Dog 和 Cat。关键操作:
– 子类用 extends Animal 继承共性;
– 子类必须实现 sound()(因为是抽象的);
– 子类可以重写 eat()(比如 Dog 吃骨头,Cat 吃鱼);
– 写多态调用:Animal a = new Dog(); a.sound(); —— 运行时自动调用 Dog 的版本。
这时你就清楚了:继承是为了复用,重写是为了定制,多态是为了解耦(调用方不用知道具体是 Dog 还是 Cat)。
用 static 和 this 把握“类级共享”与“实例专属”的边界
在类里加一个 static int count = 0;,每次构造方法执行时 count++,再提供一个 getCount() 返回它。你会发现:所有 Student 对象共享同一个 count,它不属于某个学生,而属于 Student 这个类本身。
再对比 this.name:它永远指向当前正在操作的那个对象,哪怕你写了十个学生,每个 this.name 都只管自己那一份。
这两个关键字帮你划清一条线:哪些东西是“大家共用的”,哪些是“每人一份的”。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











