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

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(形参列表)"否则会成环。

我们在通过子类的构造器创建对象时,一定在调用子类构造器的过程中,直接
或间接的调用到父类的构造器。也正因调用过父类的构造器,才会将父类中声明
的属性或方法加载到内存中,供子类对象使用。

posted @ 2025-05-05 18:14  谁来着?  阅读(38)  评论(0)    收藏  举报