当前位置: 首页 > news >正文

Java学习----面向对象

Java面向对象章节学习过程复盘:

一、第一阶段:封装(TestStudent.java)

1. 学习目标

理解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/set;

3. set方法是数据过滤器,提前拦截非法数据,保证对象数据安全;

4. 构造器作用:创建对象时同步初始化属性。

二、第二阶段:继承基础(Test1.java)

1. 学习目标

理解extends继承、is-a关系、子类自动拥有父类非私有成员

2. 代码结构

1. 父类Animal
String 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(); // 调用父类eat
d.sleep(); // 调用父类sleep
d.run(); // 调用子类自己独有方法

Cat c = new Cat();
c.name = "小花花";
c.eat();
c.run();
3. 学到的核心知识点

1. 语法:子类 extends 父类,Java单继承,一个子类只能一个父类;

2. 继承关系:狗是一种动物、猫是一种动物(is-a);

3. 子类自动复用父类非私有属性、方法,不用重复写代码;

4. 子类可以拓展自己独有的方法,父类不能调用子类独有功能。

三、第三阶段:super关键字、构造器执行顺序(Test2.java)

1. 学习目标

弄懂父子构造器执行顺序、super调用父类构造、区分父子重名成员变量

2. 代码结构

1. 父类A:有无参构造、有参构造,成员变量int m=30;

2. 子类B extends A:

◦ 子类有参构造第一行强制写super(34);,手动调用父类有参构造

◦ 子类自己重名变量int m=3;

◦ test()方法区分 this.m(子类变量)、super.m(父类变量)

3. 执行流程
B b = new B(23);
b.test();
控制台输出顺序:

1. A(int n)...2(super先执行父类构造)

2. B(int n)...4(再执行子类构造)

3. m=3(this拿子类自己的m)

4. super.m=30(super拿父类的m)

3. 关键知识点

1. 子类构造器第一行默认隐藏super();,自动调用父类无参构造;父类没有无参构造时,必须手动写super(参数)指定调用父类有参构造;

2. super.变量名:访问父类中与子类重名的成员变量;this.变量访问当前子类自身;

3. 实例化子类对象永远先初始化父类,再初始化子类,父类是根基;

4. super只能放在构造方法第一行,不能和this()互相放在对方第一行。


四、第四阶段:instanceof判断 & 向下强制转型(Test5.java)

1. 学习目标

学会多态引用下安全向下转型,用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.java)

1. 学习目标

把多态、继承、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判断StudentLeader)
int count=0;
for(int i=0;i<ps.length;i++){
if(ps[i] instanceof StudentLeader) count++;
}
System.out.println("学生干部数量:"+count); // 输出2
3. 第二个循环:遍历打印所有Worker工人信息
for(int i=0;i<ps.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/StudentLeader;

3. 想要调用子类独有属性/方法,必须先instanceof判断再向下强转;

4. 继承层级可以多层(Person→Student→StudentLeader),instanceof能识别多层子类。

整体学习成长总结

1. 顺序逻辑:封装(保护数据)→继承(复用代码)→super构造器(父子初始化)→类型转换(多态安全)→多态数组(工程实战),完全是Java面向对象标准学习路线;

2. 从单一对象操作,进阶到批量容器管理多类型对象;

3. 踩坑点都覆盖了:非法赋值、无参构造缺失、强制转型报错、重名变量区分;

4. 掌握了企业级开发基础规范:实体类封装模板、继承is-a设计、多态安全判断写法。

http://www.zskr.cn/news/1497698.html

相关文章:

  • 如何快速掌握心理学实验编程:PsychoPy的完整入门指南
  • 终极暗黑2存档编辑器:3分钟快速上手网页版D2/D2R角色修改工具
  • 千元预算选GEO引擎,哪家更稳定?
  • 补充:Repeat 虚拟滚动与 cachedCount 到底怎么用
  • 2026五常大米谁家好吃?产区好米选购实用解析 - 最新行业资讯
  • 老域名是什么?为什么SEO都喜欢老域名
  • 光伏电站LoRa数据传输远程控制系统方案
  • 软件测试简历项目经验如何编写?
  • 大功率UPS电流检测技术白皮书:2000A以上量程的传感器选型指南
  • 实测!山东拓兴MGE合金板性能揭秘,硬度耐磨突出但耐腐蚀性
  • Effective C++ 条款09:绝不在构造和析构过程中调用 virtual 函数
  • 在威尼斯遇到注单未同步一直提不了现解决的方法?
  • 打造Harness最佳实践,华为云智果AgentArts企业级智能体平台破解智能体规模化落地难题
  • 2026年,武汉口碑好的全屋定制工厂究竟有哪些?带你一探究竟!
  • KK键盘 v4.0.2-快捷连发+聊天气泡+斗图,输入体验直接拉满
  • 如何在Windows电脑上告别笨重模拟器?APK安装器让你3分钟搞定安卓应用安装
  • 爽姐的装修日常
  • FRPP 管道:玻纤增强聚丙烯防腐管道的性能革新与工业应用 - 苏一塑业13914572689
  • 收藏!AI时代程序员必看:如何升级技能,避免被淘汰?
  • 进程异常退出,定位原因技巧
  • 核货宝加拿大版订货系统:助力华商简化订货流程,降低成本
  • 用 codex逆向拆解 20 张爆款电商主图:手把手教你建立高点击率视觉工作流
  • 2026 桂林厨卫屋面地下室漏水瓷砖空鼓测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • 多水质工况实测 投入式液位计源头厂家TOP10 污水净水通用仪表 - 仪表人叶工
  • 北京26年甄选名猫猫狗狗宠物店权威排行榜店铺推荐,靠谱宠物店联系方式推荐 - 谊识预商贸
  • 计算机毕业设计之智能推荐系统在电商平台中的个性化设计与实现
  • 2026年上海美本申请规划成功案例:完整方案资料解读 - 虚拟星辰
  • 一体式超声波液位计多少钱?2026年十大品牌价格全解析与选型避坑指南 - 仪表品牌排行榜
  • 广东育家心理学研究院为什么要为休学孩子做“坤和静界·春藤计划”
  • 上海智慧食堂厂家排行:基于资质与落地案例的客观盘点 - 互联网科技品牌测评