super关键字的使用
- super理解为:父类的
- super可以用来调用:属性、方法、构造器
- super的使用:(属性、方法)
3.1 :我们可以在子类的方法或构造器中。通过使用super.属性或super.方法的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略super
3.2 :特殊情况,当子类和父类定义了同名属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用super.属性的方式,表明调用的是父类中声明的属性。代码如下:
3.3 :特殊情况:当子类重写了父类的方法以后,我们想在子类的方法中调用父类中被重写的方法时,则必须显式的使用super.方法的方式,表明被调用的是父类中被重写的方法。
Person(父类):
package com.atguigu.java3;
public class Person {
public String name;
public int age;
public int id = 33108;//身份证号
}
Student(子类):
package com.atguigu.java3;
public class Student extends Person{
public int id = 10;//学号
public void show() {
System.out.println("name:" + name + "\t" + "age:" + age);
System.out.println("学号:" + this.id + "\t" + "身份证号" + super.id);
}
}
Test类
package com.atguigu.java3;
public class Test {
public static void main(String[] args) {
Student s1 = new Student();
s1.show();//name:null age:0
//学号:10 身份证号33108
}
}
- super调用构造器
4.1 我们可以在子类的构造器中显式的使用“super(形参列表)”的方式,调用父类中声明的指定的构造器。
4.2 此方式的使用,必须声明在子类构造器的首行,所以,在类的构造器中,针对于“this(形参列表)”和“super(形参列表)”只能二选一,不能同时出现
4.3 在构造器首行,没有显式声明“this(形参列表)”或“super(形参列表)”,则默认调用的是父类中空参的构造器。
public Student() {
super();//这一行默认有,不需要写
System.out.println(" ");
}
4.4 在类的构造器中,至少有一个类的构造器中使用了“super(形参列表)”,调用父类中的构造器(因为至多有n-1个用this)
网友评论