继承与多态

一、继承

定义:允许类派生子类(只可以单一继承)

当子类继承父类之后,父类中的所有公共的成员将被子类继承(拥有),子类还可以拥有自己特殊的成员。子类无法继承父类中的构造方法和private成员。

二、重写

子类中存在与父类中同原型(一模一样)的方法,子类中覆盖了父类中的方法

final在继承中的特殊用法:

final修饰父类中的方法,表示方法不能被子类覆盖。

final修饰类,表示该类不能被继承

super 关键字:

1.区别this成员和父类成员。

2.调用父类的成员。

三、继承中的构造方法

子类不能继承父类中的构造方法,子类可以调用父类中任何一个可以访问的构造方法。

1.只能在子类的构造方法中调用父类的构造方法。

2.每次只能调用一个/次父类的构造方法。

3.调用父类的构造方法,必须在子类构造方法第一行完成。

易忘点:

创建子类对象时,会先创建(new)父类对象

调用子类构造方法时,必须手动或自动调用父类的构造方法

如果父类中的构造方法带参数,子类的构造方法中必须手动调用父类的构造方法。

手动:super();

自动:只能调用父类中不带参数的构造方法

四、多态

多态:同一个方法名称,不同的表示形态

多态实现的条件:

1.必须有继承关系

2.子类对父类方法的重写

3.父类的引用指向子类的实例

A.静态多态:在编译时即明确调用的是哪个类中的方法

又叫:编译时多态   通常体在方法的重载

B.动态多态:运行时才能明确调用的是哪个类中的方法

又叫:运行时多态   通常体在方法的重写

方法的重载、重写区别:

1.重载量方法名相同,参数列表不同。(重写方法与原方法一模一样)

2.重载是编译时多态(重写是运行时多态)

3.重载是可以无限重载(重写只能一次)

4.重载继承关系不是必须的(重写是必须有继承关系)

表态块static{}加载优先于子父类的构造方法。

(转自本人其它账号)

原文地址:https://www.cnblogs.com/janesyf/p/7840842.html