没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第 5 章 继承与接口
主要内容
•
子类与父类
•
子类的继承性
•
子类对象的构造过程
•
成员变量的隐藏和方法重写(重点)
•
super 关键字
•
nal 关键字
•
对象的上转型对象(重点)
•
继承与多态(重点)
•
abstract 类与 abstract 方法(难
点)
•
接口(重点)
5.1 子类与父类
第 5 章将讲述两方面的重要内容:类的继承与多态,接口的
实现与多态
使用关键字 extends 来声明一个类的子类,格式如下:
class 子类名 extends 父类名 {
…
}
例如:
class Student extends People {
…
}
把 Student 类声明为 People 类的子类、 People 类是 Student 类的父类
如果一个类的声明中没有使用 extends 关键字,这个类被系统
默认为是 Object 的子类。 Object 是 java.lang 包中的类。
5.2 子类的继承性
•
继承性
5.2.1 子类和父类
在同一包中的继
承性
5.1.2 子类和父类
不在同一包中的
继承性
5.1.3 protected 的
进一步说明
所谓子类继承父类的成员变量作为自己的一个成员变量,就好
像它们是在子类中直接声明了一样,可以被子类中自己定义的
任何实例方法操作,所谓子类继承父类的方法作为子类中的一
个方法,就像它们是在子类中直接定义了一样,可以被子类中
自己定义的任何实例方法调用。也就是说,如果子类中定义的
实例方法不能操作父类的某个成员变量或方法,那么该成员变
量或方法就没有被子类继承。
子类继承父类中不是 private 的成员变量作为自己的成员变量,
继承不是 private 的方法作为自己的方法,继承的成员变量或方
法的访问权限保持不变。
子类继承父类的 protected 、 public 成员变量做为子类的成员
变量,继承父类的 protected 、 public 方法为子类的方法,继
承的成员或方法的访问权限保持不变。如果子类和父类不在同
一个包里,子类不能继承父类的友好变量和友好方法。
例子 1
Father.java
Son.java
Grandson.java
Example5_1.java
5.2 子类的继承性
5.2.1 子类和父
类在同一包中的
继承性
5.1.2 子类和父
类不在同一包中
的继承性
5.1.3 protected
的进一步说明
类 A 中的 protected 成员变量和方法可以被它的直接子类
和间接子类继承(不要求同包),比如 B 是 A 的子类,
C 是 B 的子类, D 又是 C 的子类,那么 B 、 C 和 D 类都
继承了 A 类的 protected 成员变量和方法。
比如在 Other 类中用 D 类创建了一个对象 object ,该对象
通过 . 运算符访问 protected 变量和 protected 方法的权
限如下列( a )、( b )所述:
( a )对于子类 D 中自己声明的 protected 成员变量和方法,如果 object 要访问
protected 成员变量和方法,只要 Other 类和 D 类在同一个包中就可以了。
( b )如果子类 D 的对象的 protected 成员变量或 protected 方法是从父类继承的,
那么就要一直追溯到该 protected 成员变量或方法的“祖先”类,即 A 类,如果 Other
类和 A 类在同一个包中, object 对象能访问继承的 protected 变量和 protected 方法。
5.3 子类对象的构造过程
子类的构造方法中总是先调用父类的某个构造方法,也就是说,如果子类的构造
方法中没有明显地指明使用父类的哪个构造方法,子类就调用父类的不带参数的
构造方法。
用子类创建的对象时,不仅子类中声明的成员变量被分配了内存,而且父类的成
员变量也都分配了内存空间,但只将其中一部分(子类继承的那部分)作为分配
给子类对象的变量。
子类对象内存示意图
如图示意。“叉号”表
示子类中声明定义的
方法不可以操作这些
内存单元,“对号”表
示子类中声明定义的
方法可以操作这些内
存单元。
子类中有一部分方
法是从父类继承的,
这部分方法却可以
操作这部分未继承
的变量。
例子 2 中,子类对象调用继承的方法操作这
些未被子类继承却分配了内存空间的变量。
例子 2
A.java
B.java
Example5_2.java
剩余24页未读,继续阅读
资源评论
看我君临天下
- 粉丝: 82
- 资源: 362
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5ffd9193f6aec31bbf16030a46680dc7.avi
- DA14531-蓝牙传感器连接传输数据固件
- logisim实验MIPS运算器(ALU)设计(内含4位先行进位74182、四位快速加法器、32位快速加法器)-Educoder_logisim里面连线,实现4位先行进位74182和4位快速加法器-C
- 高等数学第一章第二节数列的极限
- Python 版冒泡排序算法源代码
- tensorflow-gpu-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- tensorflow-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- Python版本快速排序源代码
- 精品源码基于JSP实现的酒店管理系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功