当前课程知识点:Java程序设计 > 第三章 类的重用 > 3.0-导学 > 3.0-导学
大家好欢迎继续学习
JAVA语言程序设计
这一章我们来学习类的重用
首先我给大家简要介绍一下
在这一章都有哪些内容
在这一章我们将要学习
类的继承的概念和语法
还有我们来了解一下
JAVA里面在继承层次
最顶层的那个类
叫做Object类
为什么它有个Object类
Object类里边都有些什么东西
然后我们来学习一下
关于终结类和终结方法
如果说我们出于类设计的目的
有一些方法暂时不能够实现
我们就可以把这样的类
设计成抽象类
还有这章还要给大家介绍泛型
以及类的组合
类的组合是与类的继承不同的
另外一种的类的重用方式
现在我就把这几方面内容
先简单的给大家做一个介绍
我们知道如果你做
软件开发的时候
或者你做任何其它事情的时候
在现有的一定基础之上
去创造新的内容
那么就会比较容易一些
效率也会高一些
那么类的继承
就是在面向对象程序设计中
干这样事情的这么一种机制
也就是说我们可以在
已有类的基础之上
去设计一个新的类
把现有的某个类它的属性行为
全部都继承过来
然后在这个基础之上
可以进行改造
也可以扩展出新的属性和行为
这就是类的继承
在JAVA的类的继承体系中
最顶上的那个类
叫做Object类
在此之前我们看了很多例题
同学们也做了很多习题
我们也还没有学类的继承
所以大家就写一个单一的类
是不是认为
你这样的单一写出来的类
就没有继承谁呢
其实不是的
有这么一个类
它的名字Object
它是JAVA里面的
所有类的直接或间接的超类
也就是说每个JAVA类
都直接或间接的继承了Object
如果你声明一个类没有显示的
直接继承任何一个其它的类的话
那么这个类
就隐含的继承了Object
如果你的类继承了其它的超类
那么超类也许还有超类
到最顶上的一个超类
它就是隐含的继承了Object
所以Object类
是所有JAVA类的
直接或间接的超类
或者叫(父类)或者叫(基类)
那这样的话
在Object类里面
就定义了一些
非常有用的功能和属性
而其它的所有的JAVA类
就都继承过来了
当然了继承过来
不一定你就觉得好用
那在这一讲我会给大家介绍
如果你觉得继承过来的
哪些功能不好用
那我们还可以修改
我们了解了类的继承之后
就要知道并不是所有的类
都欢迎别人去继承的
有些类就不允许继承
有些方法就不允许你去修改它
那么这样的类
我们叫做终结类
终结类你只能拿来直接用就好
你可以构造它的对象
可以使用它里面定义的功能
但是你不能说我继承这个类
为什么呢
一会儿我就要详细给大家讲
继承是什么
因为你继承过来以后
就意味着你可以修改
还可以在这个基础上去扩展
那么终结类是只许你原样照用
不许修改 不许扩展的
终结方法是什么呢
终结方法就是这个方法设计好了
比如说它认为涉及到安全的原因
或者涉及到这个算法的效率
或者是等等的原因
不希望这个方法再被修改
希望你就直接用
那么这个方法的设计者
就可以把方法设计为终结方法
那你就不能去覆盖它了
关于继承 关于方法的覆盖
都会在这章给大家介绍
有了类的继承机制
我们就有机会
在比较顶层的
上面的这个超类里面
去规定以后的子子孙孙
整个类家族的各级子类
他们都应该具有什么样的属性
具有什么样的行为
在最顶层给它统一规定了
这样的话这个类家族
就会有相对比较统一的
这样的对外的服务接口
和它的基本属性
这个在一些处理的时候
就会比较方便
尤其当我们使用
它们多态性特征的时候
下一讲讲多态性
那么这个时候就有一个问题
有些功能我们是希望
这个类家族里面的所有类都有
但是每个类的具体实现方法
它必须是不一样的
找不到一个
或者说不存在一个有意义的
最顶层的通用方法
必须是每个类
自己去具体实现
那么这个时候怎么办呢
这个时候就变成了
我们在比较顶层的
这个超类里面设计了一些
必须所有的子类都有的
共同的行为
但是在这个顶层超类中
我没办法规定一个
特别通用的算法
或者说通用的这个程序模块
去适应所有的子类
所以也就是说在超类中
你只可以设计
我希望有这项行为
但是行为怎么实现呢
因为其它的信息不够具体
你没法实现
那么这个时候
可以只定义方法的原型
声明一个方法的原型
并且加一个abstract关键字
来描述这个方法
来修饰这个方法
这就成了一个
只有原型没有方法体的方法
它就是一个抽象方法
抽象方法它只能放在抽象类里面
也就是说一个类
如果说它有些方法还无法实现
只有原型
那么我们就得把这个类
都定义成抽象类
抽象类就只能用来
作为超类来用
因为它自己还不完整
还有未实现的东西
所以它是不能够去生成
实例对象的
那么这一章也会给大家详细介绍
怎么样声明一个
抽象类里面的抽象方法
我们会看到抽象类
和抽象方法它的作用
在前面的学习中我们看到
数据是可以作为参数的
比如说我们在方法之间
传递数据的时候
我们会把数据放在
参数表中作为参数
其实在JAVA里面
可以作为参数的
不仅仅是数据
还有什么 还有类型
类型也可以作为参数
设想一下
如果我们设计了一个
比较经典的算法
比如说像排序算法这样的
那么我们当然希望
它可以适用于各种数据类型
我们总不能为了每一种类型
去写一个排序算法
或者我们做了一个集合类型
类似于数组这样的
一个集合类型的对象
那么我们希望什么呢
希望这种集合类型
最好它可以用来生成
不同的集合对象
容纳不同类型元素的集合对象
不然的话你为整数生成
定义一种集合类型
又为浮点数定义一种集合类型
然后为其它的什么
学生对象 教师对象
你都定义各种集合类型
那么这个负担是很重的
泛型是起什么作用的呢
泛型程序设计方法
允许我们把类型也作为参数
也就是说当你定义一种
数据结构的时候
当你定义一种算法的时候
你可以把这种结构中容纳的
具体数据类型抽象化
把算法处理的具体数据
它的类型抽象化
然后等我们需要使用
这个算法的时候
等我们需要使用
这种容器类型
或者叫集合类型的时候
我们每次使用的时候
现指定这次用它
容纳什么类型的数据
这次用它处理什么类型的数据
这种机制就叫做泛型机制
这一章我们也简单的给大家
把JAVA的泛型
做个基本的介绍
另外类的组合
是另外一种类的重用机制
组合的基本思想是什么呢
它就是一种部件组装的思想
可以说在制造业
部件组装已经是一种
很普遍的生产方式了
那么写程序
是不是也可以部件组装呢
也可以
我们可以在设计一个新类的时候
用已有类的对象
作为新类的成员
这样的话就是一种组装了
就是一种组合类了
组合类它是由
其它类的部件组成的
这种组合机制
跟类的继承机制一样
都是类的重用的机制
但是它们也有不同点
不同点在什么地方呢
应该说继承它是一种隶属关系
是一个 是一种这种关系
而组合是有一个这样的关系
我整体类中有哪些部件
我就把它作为组合的形式
放在里面
我子类属于上层概念的
一个特殊情况
它是隶属关系
那么就把它作为超类子类的
这种继承关系来设计
他们都是类的重用的机制
好 这就是我们第三章
要学习的内容
刚才我给大家做了一个
简要的介绍
希望大家接下来
跟着我一节一节的具体来学习
-1.0-导学
--1.0-导学
-1.1-Java与面向对象程序设计简介
--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介
-1.2-基本数据类型与表达式
-第一章 Java语言基础知识--1.2-基本数据类型与表达式
-1.3-数组
--1.3.1-数组
-第一章 Java语言基础知识--1.3-数组
-1.4-算法的流程控制
--第一章 Java语言基础知识--1.4-算法的流程控制
-1.5-第一章小结
-第一章编程练习题
-课件
--外部链接
-Java环境配置、Eclipse使用、Helloworld程序详解
--使用eclipse建立Java项目、编写和运行Java程序
-Java数据类型
--Java整数类型
--Java浮点类型
--数据类型实战
--数据类型转换
--Java强制类型转换精度损失示例与表达式中的数据类型转换
-Java数组
-Java变量
--Java的变量
-命令行参数
--命令行参数的介绍
-2.0-导学
--2.0-导学
-2.1-面向对象方法的特性
--第二章 类与对象--2.1-面向对象方法的特性
-2.2-1-类声明与对象创建
--第二章 类与对象--2.2-1-类声明与对象创建
-2.2-2-数据成员
--第二章 类与对象--2.2-2-数据成员
-2.2-3-方法成员
--第二章 类与对象--2.2-3-方法成员
-2.2-4-包
--2.2-4-包
--第二章 类与对象--2.2-4-包
-2.2-5-类的访问权限控制
--第二章 类与对象--2.2-5-类的访问权限控制
-2.3-1-对象初始化
--第二章 类与对象--2.3-1-对象初始化
-2.3-2-内存回收
--第二章 类与对象--2.3-2-内存回收
-2.4-枚举类
--2.4-枚举类
--第二章 类与对象--2.4-枚举类
-2.5-应用举例
--2.5-应用举例
-2.6-第2章小结
-第二章编程练习题
-课件
--第二章课件
-3.0-导学
--3.0-导学
-3.1.1-3.1.2-类继承的概念和语法
--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法
-3.1.3-隐藏和覆盖
--第三章 类的重用--3.1.3-隐藏和覆盖
-3.2-Object 类
--第三章 类的重用--3.2-Object 类
-3.3-终结类与终结方法
--第三章 类的重用--3.3-终结类与终结方法
-3.4-抽象类
--3.4-抽象类
--第三章 类的重用--3.4-抽象类
-3.5-泛型
--3.5-泛型
--第三章 类的重用--3.5-泛型
-3.6-类的组合
--3.6-类的组合
-3.7-小结
--3.7-小结
-第三章编程练习题
-课件
--课件
-4.0-导学
--导学
-4.1-接口
--接口
--第四章 接口与多态--4.1-接口
-4.2.1-4.2.2-类型转换
--类型转换
--第四章 接口与多态--4.2.1-4.2.2-类型转换
-4.2.3-方法的查找
--方法的查找
--第四章 接口与多态--4.2.3-方法的查找
-4.3-多态的概念
--多态的概念
--第四章 接口与多态--4.3-多态的概念
-4.4-多态的应用举例
--多态的应用举例
--第四章 接口与多态--4.4-多态的应用举例
-4.5-构造方法与多态性
--构造方法和多态性
--第四章 接口与多态--4.5-构造方法与多态性
-4.6-本章小结
--本章小结
-第四章编程作业
-课件
--课件
-5.0-导学
--5.0-导学
-5.1.1-5.1.2-异常处理的概念
--第五章 输入输出--5.1.1-5.1.2-异常处理的概念
-5.1.3-5.1.5-异常的处理
--第五章 输入输出--5.1.3-5.1.5-异常的处理
-5.2-输入输出流的概念
--输入输出流的概念
--第五章 输入输出--5.2-输入输出流的概念
-5.3.1-写文本文件
--写文本文件
--第五章 输入输出--5.3.1-写文本文件
-5.3.2-读文本文件
--读文本文件
--第五章 输入输出--5.3.2-读文本文件
-5.3.3-写二进制文件
--写二进制文件
--第五章 输入输出--5.3.3-写二进制文件
-5.3.4-读二进制文件
--读二进制文件
-5.3.5-File类
--File类
-5.3.6-处理压缩文件
--处理压缩文件
-5.3.7-对象序列化
--对象序列化
-5.3.8-随机文件读写
--随机文件读写
-5.4-本章小结
--本章小结
-课件
--课件
-6.0-导学
--导学
-6.1-Java集合框架介绍
--第六章 对象群体的组织--6.1-Java集合框架介绍
-6.2-主要接口及常用的实现类
--第六章 对象群体的组织--6.2-主要接口及常用的实现类
-6.3-常用算法
--常用算法
-6.4-数组实用方法
-6.5-基于动态数组的类型(Vector, ArrayList)
--基于动态数组的类型(Vector, ArrayList)
-6.6-遍历Collection
-6.7-Map接口及其实现
-6.8-第6章小结
--第6章小结
-课件
--课件
-7.0-导学
--导学
-7.1-绘图
--绘图
-7.2-Swing基础
--Swing基础
-7.3-Swing的层次
--Swing的层次
-7.4-布局管理
--布局管理
-7.5-内部类
--内部类
-7.6-事件处理的基本概念
-7.7-事件派发机制
--事件派发机制
-7.8-顶层容器
--7.8-顶层容器
-7.9-中间层容器(一)
-7.10-中间层容器(二)
-7.11-原子组件(一)
-7.12-原子组件(二)
-7.13-原子组件(三)
-7.14-其它Swing特性
-7.15-第7章小结
-课件
--课件