(二)JAVA入门--继承

来源:互联网 发布:淘宝买电玩人马皮肤 编辑:程序博客网 时间:2024/06/08 00:08

一、继承的概念

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

二、成员变量

1、子类存在就不找父类;子类不能直接访问父类的私有变量(但可以间接使用get函数访问);
2、super关键字:相对于this来说,this是指向自身类中变量,super是指向父类中的变量。
父子继承内存关系

3、图中父子继承内存关系:左上角是栈,右上角是堆,下面是代码段。
4、对于父中private修饰的变量,子不能继承,但是在创建子对象时,堆中会出现这些变量,但是不能直接初始化,只能通过父中的this对其初始化。

三、成员函数

1、当子父类中出现成员函数一模一样的时候,会运行子类的函数,这叫做函数的覆盖(重写)。(重载是在同一类中进行)。
2、覆盖的注意事项:子类权限必须大于等于父类权限才能覆盖;静态只能被静态覆盖;
3、什么时候采用覆盖操作?当对一个类中的函数进行扩展时,可以建立一个子类进行对其的函数进行扩展。相当于更新操作啊。

四、构造函数

1、子类不能继承父类的构造函数,但是父类的构造函数带有参数的,则必须在子类的构造函数中显式地通过super关键字调用父类的构造器并配以适当的参数列表。
2、如果父类有无参构造函数,则在子类的构造函数中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造函数(隐藏了super();)。
(若父类有参数的构造器,自子类必须用super调用并配上参数;若父类有无参数的构造器,子类不用super,系统自动调用无参构造器)。
3、子类的成员变量是在父类构造函数和变量进行初始化运行完成以后,才会去初始化子类的成员变量(子类出生以后,第一件事是想着去找父亲,找完父亲再去忙自己的事情)。

五、final关键字

可以修饰类、变量、方法;
1、修饰的类:为最终类不能不继承,若类是final的,则其中的方法自动为final,但是变量不是。
2、修饰的变量为常量,只能被赋值一次;
3、修饰的方法不可以覆盖(不能被子类重写)。