Fork me on GitHub

super关键字

Posted on 2019-09-03 17:57  攀一座山  阅读(157)  评论(0编辑  收藏  举报

super:父类的,从父类中开始查找的。

要通过super进行访问的(属性、方法、构造器)都不能是私有的,跨包还不能是缺省的。

(1)super.成员变量

当子类具有与父类同名的成员变量时,可以通过super.成员变量进行区分,表示访问父类的成员变量。

(2)super.成员方法

当子类“重写”了父类的某个方法,在子类中又想要调用父类被重写的方法时,就可以使用super.成员方法。

(3)super()或super(实参列表)

在子类构造器的首行。

super():表示调用父类的无参构造。

super(实参列表):表示调用父类的有参构造。

 

小结:this.和super.:

如果用的是this.,那么从子类先开始找,如果没有,再会往上追溯,从父类中查找。即this.访问的成员,可能是本类声明的,也可以是本类从父类继承的。

如果用的是super.,那么从直接父类开始找,如果直接父类没有,再往上追溯,从间接父类找。即super.访问的成员,一定是父类的,可定不是子类自己的。

如果既没有写this.,又没有写super.,如果访问的是变量,那么看是否有局部变量,如果有局部变量,先考虑局部变量;如果访问的是方法,那么从这代码的当前类开始找。如果子类有重写的方法,要执行重写的。

Copyright © 2024 攀一座山
Powered by .NET 8.0 on Kubernetes