super关键字 : 跟 this 关键字类似,只不过 super 关键字指向 该类 父类对象,用来调用父类资源
使用场景
-
当子类跟父类中的资源(属性名、方法名等)重名时需要调用父类相关资源,使用 super.属性名、super.方法名、 super() 、super(参数)等直接调用------用来区分本类资源和父类资源同名情况
-
子类构造方法中默认情况下会调用父类的无参构造方法即 super(),隐藏在构造方法的第一行,若父类中没有无参构造方法就会编译错误,当然 如果父类中有手动编写的有参构造方法,只要在子类中手动写上就行 即 super(参数1,参数2···),默认隐藏的super()失效-------super调用父类构造方法只能在子类构造方法的第一行
this关键字 和 super关键字在调用资源上的区别
-
this.属性/方法.. 先从本类中查找,本类中没有就会到父类中查找,若父类也没有,则编译报错
-
super.属性/方法 直接从本类的直接父类中查找相关资源
-
总结: 除非父类中的方法被子类重写或属性被子类覆盖,都可以直接使用this调用父类资源