面向对象学习笔记18 - 关键字super

2026-02-20 16:08:12 1555

1、为什么需要super?

举例1:子类继承父类之后,对父类的方法进行了重写,那么在子类中,是否

还能对父类中被重写的方法进行调用?

可以的!

举例2:子类继承父类之后,发现子类和父类中定义了同名的属性,是否可以

在子类中区分两个重名的属性?

可以的!

实现的方法就是对关键字super的使用。

2、super的理解

super = “父类的……”

3、super可以调用的结构

属性、方法、结构体

以下是具体情况

3.1super调用属性方法

子类继承父类后,我们就可以在子类的构造器或方法中,调用父类中声明的属

性和方法。(满足封装性的情况下)

如何调用?

需要使用"super."的结构。但是如果出现了子类重写了父类的方法或子父类中

出现了同名的属性时,则必须使用"super."的声明,显式的调用父类被重写的

方法或同名的属性。

但尽量避免出现子类和父类中出现同名的属性的情况出现。

3.2super调用构造器

3.2.1

子类继承父类时,不会继承父类的构造器。只能通过"super(形参列表)"

的方式调用父类指定的构造器。

3.2.2

规定:"super(形参列表)"必须声明在构造器首行。(和this类似)

3.2.3

在构造器的首行可以使用"this(形参列表)",调用本类中重载的构造器,

结合3.2.2

结论:在构造器的首行,"this(形参列表)"和"super(形参列表)"只能二选一。

3.2.4

如果子类构造器首行,既无this,也无super,默认调用的是"super()";

3.2.5

子类中的任何一个构造器,要么会调用本类中重载的构造器,要么会调用

父类的构造器,只能二选一。

3.2.6

一个类中声明有n个都早期,最多有"n-1"个构造器使用了"this(形参列表)",

剩下那个一定是"seper(形参列表)"否则会成环。

我们在通过子类的构造器创建对象时,一定在调用子类构造器的过程中,直接

或间接的调用到父类的构造器。也正因调用过父类的构造器,才会将父类中声明

的属性或方法加载到内存中,供子类对象使用。

Copyright © 2022 世界杯积分_上一届世界杯冠军 - f0cai.com All Rights Reserved.