天天看点

【Java】16.面向对象之继承·上(概念、作用、语法、protected、final、类加载、继承类型)

继承是面向对象的一个特性,注意使用时机,可结合多态活学活用。

①概念

面向对象中,继承(Inherit)允许分等级层次地创建类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的数据和方法。

②作用

为了避免多个类重复定义共同行为。

③语法

使用extends就可以继承父类,拥有父类的成员和行为,还可以扩充父类没有的数据和行为。

【Java】16.面向对象之继承·上(概念、作用、语法、protected、final、类加载、继承类型)

子类可以直接修改父类的成员和方法。

④继承与protected

父类的private成员也会被继承,但无法直接使用,必须通过父类的方法存取。

显得过于麻烦。所以可以用到protected修饰符。

这个修饰符的意思是,相同包中的类可以直接存取,不同包中的类可以通过继承后的子类直接存取。

⑤继承与final

final关键字,用在成员变量上表示可继承不可修改;用在方法上表示不可修改、重写;用在类上表示不可被继承。

⑥继承与构造函数(类加载)

子类是不继承父类的构造方法的,它只是调用父类的构造器初始化(隐式或显式)且不会创建父类对象。

若类存在继承关系,在创建子类实例后,会先执行父类构造函数的区块,再执行子类构造函数的区块。

首先开辟内存,然后调用类的构造函数。

第一步:

先调用父类的构造函数对这个对象进行初始化,如果子类构造函数中没有指定,则默认调用父类的无参构造函数。如果父类自定义了构造函数即没有无参且子类没有指定则编译报错。

※ 子类指定父类的构造器需要使用到super关键字,super(参数)即可调用指定不同参数的父类构造函数。

第二步:

所有父类构造函数运行完毕后再继续运行这个类自己的构造函数。

⑦继承类型(菜鸟教程)

Java不支持多继承但支持多重继承。

【Java】16.面向对象之继承·上(概念、作用、语法、protected、final、类加载、继承类型)