Java学习总结第十四天Java类的继承
来源:互联网 发布:炫光制作软件 编辑:程序博客网 时间:2024/05/21 10:11
类的继承
Java的继承具有单继承的特点,每个子类只有一个直接父类。
Java的继承是通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类。父类和子类的关系是一种一般和特殊的关系。例如水果和苹果的关系,苹果继承了水果,苹果是水果的子类,则苹果是一种特殊的水果。
定义继承的形式为:
[访问权限] class 类名 [extends 父类]
{
类体
}
Java中的继承是通过extends关键字来实现的,在定义类时使用extends关键字指明新定义类的父类,就在两个类之间建立了继承关系。
新定义的类称为子类,它可以从父类那里继承所有非private的属性和方法作为自己的成员。
下面是Fruit类的代码:
接下来再定义该Fruit类的子类Apple,程序如下:
子类扩展了父类,将可以获得父类的全部属性和方法,但不能获得父类构造器
Java里的继承都是单继承,也就是只能有一个直接的父类,可以有n个间接父类。
重写父类的方法:
子类扩展了父类,子类是一个特殊的父类。大部分时候,子类总是以父类为基础,额外增加新的成员变量,和方法。担忧一种情况例外:子类需要重写父类的方法。例如鸟类都包含了飞翔方法,其中鸵鸟是一种特殊的鸟类,因此鸵鸟应该是鸟的子类,因此它也将从鸟类获得飞翔方法,但这个飞翔方法明显不适合鸵鸟,为此,鸵鸟需要重写鸟类的方法。
下面程序先定义了一个Bird类:
下面再定义一个Ostrich类,这个类扩展了Bird类,重写了Brid类的fly()方法:
这种子类包含于父类同名方法的现象被称为重写,也被称为方法覆盖。
方法的重写要遵循“两同两小一大” 指的是:方法名相同,形参列表相同。返回值类型更小或相同,抛出的异常更小或相同,访问控制权限要更大。
super限定
super是Java提供的一个关键字,super用于限定该对象调用它从父类继承得到的实例变量或方法。正如this不能出现在static修饰的方法中一样,super也不能出现在static修饰的方法中。
如果在某个方法中访问名为a的成员变量,但没有显式指定调用者,则系统查找a的顺序为:
(1)查找该方法中是否有名为啊的局部变量。
(2)查找当前类中是否包含名为a的成员变量。
(3)查找a的直接父类中是否包含名为a的成员变量,一次上溯a的所有父类,知道java.lang.Object类,如果最终不能找到名为a的成员变量,则系统出现编译错误。
调用父类构造器
子类构造器总会调用父类构造器。
如果子类构造器没有显式使用super调用父类构造器;子类构造器默认会调用父类无参数的构造器。
创建一个子类实例时,总会先调用最顶层父类的构造器。
从上面程序中不难看出,使用super调用和使用this调用也很像,区别在于super调用的是父类的构造器,而this调用的是同一个类中重载的构造器。因此,使用super调用父类构造器也必须出现在子类构造器执行体的第一行。
子类构造器调用父类构造器分如下几种情况:
Ø 子类构造器执行体的第一行使用super显式调用父类构造器,系统将根据super调用里传入的实参列表调用父类对应的构造器。
Ø 子类构造器执行体的第一行代码使用this显式调用本类中重载的构造器,系统将根据this调用里传入的实参列表调用本类中的另一个构造器。执行本类中另一个构造器时即会调用父类构造器。
Ø 子类构造器执行体中既没有super调用,也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数构造器。
- Java学习总结第十四天Java类的继承
- java学习总结——第十四天
- JAVA学习第十四天
- Java学习第十四天
- 第十四天java学习map的使用
- No_16_0307 Java基础学习第十四天
- java学习第十四天之String
- java第十四天 泛型
- java第十四天
- Java学习第二十四天
- JAVA 攻城狮 第十四天
- Java学习总结第二十四天java.lang包(一)
- Java学习总结第三十四天Java笔试题(三)
- 【屌丝学习笔记】第十四天 JAVA基础
- 黑马程序员--Java基础学习(集合框架)第十四天
- Java进阶学习第十四天——MVC开发流程
- No_16_0325 Java基础学习第二十四天—多线程学习总结
- 学习python的第十四天
- 玩无限消乐的设计示例(高级篇)灭绝特效算法
- 48. Rotate Image
- (POJ 2528)Mayor's posters 线段树 + 离散化
- 通过终端shell来操作MySQL数据库(MAMP下)
- 【暂无】 二叉树 二叉树的计数(count-tree.cpp)
- Java学习总结第十四天Java类的继承
- Verify Preorder Sequence in Binary Search Tree
- 【二叉树】 堆应用:合并果子
- SHA1算法原理
- ARM嵌入式系统
- AOP.jsp+MVC.jsp
- js中的in操作符
- HDU5536 Chip Factory 被外表欺骗的水题 国庆咸鱼
- 计蒜客 青云的机房组网方案