8、从零开始学习JAVA--继承及super的用法

来源:互联网 发布:网络春晚2017在线观看 编辑:程序博客网 时间:2024/05/18 01:28

使用关键字extends,可以使一个类的成员被另一个类继承。


一个父类可以被N多子类继承,但是一个子类只能继承一个父类。

继承是一种扩展关系,子类除了继承父类的成员外还能创建自己的成员。

class 子类 extends 父类

   。。。

注意不能继承构造函数。

1、子类实例化过程(就是new一下后的过程)

在执行子类的构造函数时,必须调用父类的构造函数,因为子类继承了父类的成员,却无法继承父类的构造函数,只能调用,最终目的也是为了消除无用代码。

格式:在子类构造函数开头super();

父类可以有多个构造函数,根据super()的参数列表决定调用哪一个构造函数,和this()一样,也必须是构造函数的第一条语句。

this:调用本类的构造函数

super:调用父类的构造函数

2、函数的复写

override 函数的复写/重写

在子类里面重写父类里的某一函数,要求函数的定义(返回值、类型、参数)完全相同。

使用super调用父类的成员函数,super.函数名(参数);

super的用法和this很像,不过一个是调用父类,一个是调用本类。

3、函数的转型——多态性

3.1、向上转型

将子类的对象赋值给父类的引用。

假设有个Person父类,Student子类。

Student S = new Student();

Person P = S;

或者

Person P = new Student();

注意:如果子类对父类进行了扩写,P只能调用父类中已有的成员,对于子类扩写的成员无法调用; 如果子类中发生了函数的复写,P调用的是改写后的函数,

总结就是:一个引用能够调用哪些成员(变量和方法),取决于这个引用的类型(对于父类来说,子类扩写的成员,父类就无法调用); 一个引用调用的是哪一个方法,取决于这个引用所指向的对象(如果发生了函数的复写)。

3.2、向下转型

假设有个Person父类,Student子类。

Student S1 = new Student();

Person P = S1;

Student S2 = (Student)P;

发生向下转型的前提是先向上转型。