Java面向对象章节学习过程复盘一、第一阶段封装TestStudent.java1. 学习目标理解private私有属性 get/set方法实现封装给属性加业务校验禁止外部直接访问成员变量。2. 代码结构拆解1. 实体类Student• 三个私有属性private String name; private int age; private double score;• 无参、全参两个构造方法用来快速创建对象赋值• setXxx()赋值入口加入业务逻辑校验◦ setAge年龄必须 0~160非法打印提示不赋值◦ setScore成绩必须0~100非法打印提示• getXxx()取值出口安全获取私有属性值2. 测试类TestStudent主程序入口Student s new Student();s.setName(王永晨);s.setAge(300); // 触发校验打印【年龄不合法】s.setScore(199.0); // 触发校验打印【成绩不合法】// 合法数值才会存入对象属性System.out.println(s.getName()-s.getAge()-s.getScore());3. 学到的核心知识点1. private修饰的变量只能本类内部访问外部s.age直接点访问会报错2. 封装标准模板私有属性 无参构造 全参构造 get/set3. set方法是数据过滤器提前拦截非法数据保证对象数据安全4. 构造器作用创建对象时同步初始化属性。二、第二阶段继承基础Test1.java1. 学习目标理解extends继承、is-a关系、子类自动拥有父类非私有成员2. 代码结构1. 父类AnimalString name; // 缺省权限同包子类可直接访问public void sleep(){}public void eat(){}2. 两个子类• Dog extends Animal新增独有方法run()• Cat extends Animal新增独有方法run()3. 测试main方法Dog d new Dog();d.name 大黄; // 继承父类name属性d.eat(); // 调用父类eatd.sleep(); // 调用父类sleepd.run(); // 调用子类自己独有方法Cat c new Cat();c.name 小花花;c.eat();c.run();3. 学到的核心知识点1. 语法子类 extends 父类Java单继承一个子类只能一个父类2. 继承关系狗是一种动物、猫是一种动物is-a3. 子类自动复用父类非私有属性、方法不用重复写代码4. 子类可以拓展自己独有的方法父类不能调用子类独有功能。三、第三阶段super关键字、构造器执行顺序Test2.java1. 学习目标弄懂父子构造器执行顺序、super调用父类构造、区分父子重名成员变量2. 代码结构1. 父类A有无参构造、有参构造成员变量int m30;2. 子类B extends A◦ 子类有参构造第一行强制写super(34);手动调用父类有参构造◦ 子类自己重名变量int m3;◦ test()方法区分 this.m子类变量、super.m父类变量3. 执行流程B b new B(23);b.test();控制台输出顺序1. A(int n)...2super先执行父类构造2. B(int n)...4再执行子类构造3. m3this拿子类自己的m4. super.m30super拿父类的m3. 关键知识点1. 子类构造器第一行默认隐藏super();自动调用父类无参构造父类没有无参构造时必须手动写super(参数)指定调用父类有参构造2. super.变量名访问父类中与子类重名的成员变量this.变量访问当前子类自身3. 实例化子类对象永远先初始化父类再初始化子类父类是根基4. super只能放在构造方法第一行不能和this()互相放在对方第一行。四、第四阶段instanceof判断 向下强制转型Test5.java1. 学习目标学会多态引用下安全向下转型用instanceof避免类型转换异常2. 代码结构1. 父类Animal子类Dog、Cat、Tiger都重写eat()2. 多态写法Animal a new Dog();父类引用指向子类对象3. 转型逻辑System.out.println(a instanceof Animal); // true 狗属于动物System.out.println(a instanceof Dog); // true 引用存的是狗System.out.println(a instanceof Cat); // false 不是猫// 安全写法先判断再强转if(a instanceof Cat){Cat c (Cat)a;}else{System.out.println(引用存储的不是Cat无法转换);}3. 知识点1. 引用 instanceof 类名判断引用里实际存储的对象是不是该类/子类实例返回布尔值2. 多态向上转型Animal a new Dog() 自动安全转换3. 向下转型必须强制(Cat)a不判断直接转类型不匹配会抛ClassCastException崩溃4. 规范向下转型前必须先用instanceof校验类型。五、第五阶段多态数组综合实战Test6.java1. 学习目标把多态、继承、instanceof整合到数组场景批量管理不同子类对象2. 层级继承关系Person顶层父类name/age/country、eat()、work()├─ Student extends Person重写work()│ └─ StudentLeader extends Student新增开会openMeeting()└─ Worker extends Person重写work()3. 核心代码逻辑1. 创建父类数组存放所有子类实例多态数组Person[] ps new Person[5];ps[0] new Student();ps[1] new Worker();ps[2] new StudentLeader();ps[3] new StudentLeader();ps[4] new Worker();ps[1].name 叶鑫;ps[4].name 丁颖华;2. 第一个循环统计学生干部数量用instanceof判断StudentLeaderint count0;for(int i0;ips.length;i){if(ps[i] instanceof StudentLeader) count;}System.out.println(学生干部数量count); // 输出23. 第二个循环遍历打印所有Worker工人信息for(int i0;ips.length;i){if(ps[i] instanceof Worker){System.out.println(ps[i].name-ps[i].age-ps[i].country);}}4. 学到的综合思想1. 多态数组统一用父类数组容器装所有子类对象批量管理2. 向上转型自动发生数组里每个元素都是Person引用底层实际是Student/Worker/StudentLeader3. 想要调用子类独有属性/方法必须先instanceof判断再向下强转4. 继承层级可以多层Person→Student→StudentLeaderinstanceof能识别多层子类。整体学习成长总结1. 顺序逻辑封装保护数据→继承复用代码→super构造器父子初始化→类型转换多态安全→多态数组工程实战完全是Java面向对象标准学习路线2. 从单一对象操作进阶到批量容器管理多类型对象3. 踩坑点都覆盖了非法赋值、无参构造缺失、强制转型报错、重名变量区分4. 掌握了企业级开发基础规范实体类封装模板、继承is-a设计、多态安全判断写法。