继承是面向对象的一个特性,注意使用时机,可结合多态活学活用。
①概念
面向对象中,继承(Inherit)允许分等级层次地创建类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的数据和方法。
②作用
为了避免多个类重复定义共同行为。
③语法
使用extends就可以继承父类,拥有父类的成员和行为,还可以扩充父类没有的数据和行为。
子类可以直接修改父类的成员和方法。
④继承与protected
父类的private成员也会被继承,但无法直接使用,必须通过父类的方法存取。
显得过于麻烦。所以可以用到protected修饰符。
这个修饰符的意思是,相同包中的类可以直接存取,不同包中的类可以通过继承后的子类直接存取。
⑤继承与final
final关键字,用在成员变量上表示可继承不可修改;用在方法上表示不可修改、重写;用在类上表示不可被继承。
⑥继承与构造函数(类加载)
子类是不继承父类的构造方法的,它只是调用父类的构造器初始化(隐式或显式)且不会创建父类对象。
若类存在继承关系,在创建子类实例后,会先执行父类构造函数的区块,再执行子类构造函数的区块。
首先开辟内存,然后调用类的构造函数。
第一步:
先调用父类的构造函数对这个对象进行初始化,如果子类构造函数中没有指定,则默认调用父类的无参构造函数。如果父类自定义了构造函数即没有无参且子类没有指定则编译报错。
※ 子类指定父类的构造器需要使用到super关键字,super(参数)即可调用指定不同参数的父类构造函数。
第二步:
所有父类构造函数运行完毕后再继续运行这个类自己的构造函数。
⑦继承类型(菜鸟教程)
Java不支持多继承但支持多重继承。