子类和父类的属性不存在覆盖的情况,子类和父类可以存在同名的属性(假设该属性为int id ),在子类中分别以id/this.id和super.id来调用子类和父类中的id属性;实质上,当我们在子类中使用this调用属性和方法时,是先在该子类中寻找该属性或方法,当在该子类中找不到时,再去父类中寻找; super的使用: 1.我们可以在子类的方法或构造器中,通过使用“super.属性和"“super.方法”的方式,显式地调用父类中声明地属性和方法,但是通常情况下,我们省略“super."; ⒉特别的,当子类和父类中出现同名的属性时,我们想要在子类中使用父类中声明的属性,则必须显式地使用"super.属性”的方式,表明调用的是父类中声明的属性; 注: super不仅指子类的直接父类,也包括其间接父类,使用时先在直接父类寻找调用的属性或方法,未找到则层层向上寻找 super调用构造器: 1.我们可以在子类的构造器中显式地使用“super(形参列表)”的方式,调用父类中声明的指定构造器;2."super(形参列表)"的使用,必须在子类构造器的首行; 3.上一条规则表明,在子类的构造器中"this(形参列表)"和"super(形参列表)"的使用,只能二选一; 4.当我们在构造器的首行没有显式地使用“this(形参列表)"和“super(形参列表)“时,默认调用父类中的空参构造器"super()”; 5.子类中构造器的首行要么是this(形参列表)要么是super(形参列表),只有当使用this(形参列表)时,才不会使用super(形参列表),否则会显式或隐式地使用super(形参列表);
super关键字
2021-04-15 17:35:30
浏览数 (2)