Think in java学习笔记-第6章 Inheritance

本文深入讲解Java中的继承概念,包括继承的基本语法、初始化过程、清除顺序的管理、合成与继承的选择、上溯造型的应用以及final关键字的使用技巧。

第6章 继承

一、              继承的语法:

class   Thisclass  extends   Superclass{

    //classBody

}

1、   java 的所以类都是从 Object 类继承来得。 java 的继承是单继承。

2、   子类拥有父类的所有成员和方法,除了 private 的,除了构造方法。

3、   子类可以覆盖拥有的父类的成员和方法。也可以添加自己的成员和方法。

4、   子类中使用父类被覆盖的成员和方法用 super 关键字

例: Detergent.java

二、              初始化父类子对象

1.          创建子类的对象时,同时也会创建父类的一个子对象,父类的子对象包含在子类的对象中。

2.          为了保证父类子对象的正确初始化,在子类的构造方法中, Java 会首先自动插入对父类默认构建器的调用。

例: Cartoon.Java

3.          如果父类的构造方法含有自变量,则在子类的构造方法必须显式的调用。用 super 关键字。

例: Chess.java

4.          子类的构造方法必须捕获父类构造方法的所有违例

5.          尽管编译器会强迫我们对基础类进行初始化,并要求我们在构建器最开头做这一工作,但它并不会监视我们是否正确初始化了成员对象。所以对此必须特别加以留意。

三、              确保正确的清除顺序

1.        在确实需要自己去清除一个对象时,必须写一个特别的方法,明确、专门地来做这件事情。

2.        让客户程序员知道他们必须调用这个方法

3.        不管发生什么清除方法必须被执行,必须将这样的清除代码置于一个 finally 从句中防范任何可能出现的违例事件。

4.        注意清楚顺序与创建顺序相反

例: CADSystem.java

四、           选择合成还是继承

属于 关系是用继承来表达的,而“包含”关系是用合成来表达的。

五、              上溯造型

1.        子类属于父类的一种类型,可以使用父类对象的地方都可以使用子类的对象,这时子类对象被当作父类对象对待。

2.        继承是对一种特殊关系的表达,意味着 这个新类属于那个旧类的一种类型

六、              final 关键字

这个东西不能改变”。之所以要禁止改变,可能是考虑到两方面的因素:设计或效率。

1.            final 数据 常数

1)         常数的用途:

l          编译期常数,它永远不会改变,必须属于基本数据类型,必须给出一个值。

l          在运行期初始化的一个值,我们不希望它发生变化。对于对象句柄, final 句柄一旦初始化,永远不能指向另一个对象。对于基本数据类型的值也同。

例: FinalData.java

2)         空白 final

Java 1.1 允许我们创建 空白 final” 。尽管被声明成 final ,但却未得到一个初始值。空白 final 都必须在实际使用前得到正确的初始化。

例: BlankFinal.java

3)         final 自变量

Java 1.1 允许我们将自变量设成 final 属性,方法是在自变量列表中对它们进行适当的声明。这意味着在一个方法的内部,我们不能改变自变量句柄指向的东西。

例: FinalArguments.java

2.            final 方法

使用 final 方法的两方面理由:

第一个是为方法“上锁”,防止任何继承类改变它的本来含义。不可被覆盖。
第二个理由是程序执行的效率。关闭动态绑定。

类内所有 private 方法都自动成为 final

3.            final

不希望从这个类继承。例: Jurassic.java

六、 初始化总结

例: Beetle.java

1、   运行 Beetle 时( java Beetle ),首先装载程序根据 Beetle.main 到外面找到 Beetle.class 类。

2、   在装载过程中,装载程序注意它有一个父类 Insect ,无论是否准备生成 Insect 的一个对象,都会将 Insect.class 载入。若 Insect 也含有父类,则 Insect 的父类随即也会载入,以此类推。

3、   在根父类(此时是 Insect )执行 static 成员变量初始化,再在下一个子类执行,以此类推。

4、   创建对象。

l          首先,子类中的所有基本数据类型都会设成它们的默认值,而将对象句柄设为 null

l          调用父类构建器:构建器采用与子类构建器完全相同的处理过程;父类的非 static 成员变量执行规定初始化。创建父类对象。

l          子类的非 static 成员变量执行规定初始化。

l          最后,执行构建器剩余的主体部分,创建子类对象。

采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值