JAVA中的面向对象-3

思考1.为什么JAVA要写构造方法,用set/get方法不也一样吗?构造方法多余吗?

(1)核心本质:产生的时机不同,构造方法 :在new对象的那一瞬间执行。此时对象还没完全创建好,它就先把规矩定死了。set方法:对象已经创建完成后,你随时可以调用。

(2)不可变性的支持,final关键字,如果希望某个属性(比如身份证号、学号)一旦创建就永远不能修改,必须用 final 修饰。而final修饰的成员变量,只能通过构造方法赋值,set方法压根不能调用

因此,构造方法不是多余的,而是必须的。Set/Get 也不是构造方法的平替,而是补充。

2.集成练习

根据下面的描述定义继承结构

学生:属性:姓名、年龄、年级

老师:属性:姓名、年龄、学科

3.继承:Java 只支持单继承,不支持多继承,但可以多实现。 Object:顶级父类。

  1. 成员变量的继承:就近原则。

  2. 方法重写快捷键:Alt + Insert。

  3. 构造方法:父类的构造方法不能被继承,只能通过 super 调用父类构造器来创建对象。

7.多态(Polymorphism):

Person per = new Student(); // 父类引用指向子类对象

8.多态的前提条件① 有继承关系(或实现关系)② 有父类引用指向子类对象

9.多态中成员访问规则:成员变量,编译运行都看左边;成员方法,编译看左边,运行看右边。

10.多态下的类型转换

问题:在多态下,不能直接使用子类独有的功能。

解决方法:向下转型(强制类型转换)

Person p = new Student(); // 向上转型(自动)

Student s = (Student) p; // 向下转型(强制)

转换后即可调用子类特有的属性和方法。

相关推荐
程序猿乐锅14 分钟前
一文讲透缓存穿透、击穿和雪崩
java·redis·spring·缓存·mybatis
bkspiderx26 分钟前
Qt 的消息机制:事件驱动与信号槽的底层逻辑
开发语言·qt·信号槽·事件驱动·qt 的消息机制
xcl092527 分钟前
西安同城货运系统源码开发实战 核心功能实现与部署全指南
java·spring boot
晴天的雨.99228 分钟前
【C++算法】三数之和
开发语言·c++·算法
pippocao33 分钟前
王者荣耀日志组件BqLog为什么这么快之1——高性能实时压缩日志
java
AC赳赳老秦37 分钟前
公开 CSV 数据集批量处理实战:用 OpenClaw 高效完成下载、清洗与标准化分析样本生成
java·开发语言·汇编·c++·python·deepseek·openclaw
ym hyd 1111 小时前
慢性病精细化管理平台源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设
程序猿乐锅1 小时前
【黑马点评 | 第七篇】Redis 分布式锁的两种实现
java·数据库·redis·分布式·spring·缓存
SL_staff1 小时前
JVS私有化交付为何敢承诺100%源码开放与无兜底风险?
java·低代码·全栈
j7~1 小时前
【Python】(篇七)《使用Python库》 -- 详解
开发语言·后端·python·编程学习·python标准库·python第三方库·python拓展