super关键字:
1.经常用于子类中;
2.它用来访问父类中的成员:成员变量,成员方法,构造方法
3.一般时候,我们不需要显示的使用。
4.有些情况,在子类中,要访问父类的成员时,必须要显示的使用super:
1).当子类的成员,覆盖父类成员时,并且需要访问父类成员时;
2).父类没有提供"无参的构造方法"
class A
{
int num = 10;
//父类中,没有提供无参构造方法,只提供一个带参的构造方法,虚拟机就不会自动添加一个无参构造方法
//此时,实例化一个子类时,虚拟机无法调用无参构造方法。
//这时,就需要在子类中,显示的使用super(实参),去调用父类中带参的构造方法
A(int n){
System.out.println("A的带参构造方法");
}
}
class B extends A
{
int num = 20;//子类覆盖了父类的成员变量
//子类必须在某个构造方法中,显示的使用super(实参),去调用父类中唯一的构造方法
B(int n){
super(n);//将实参n直接传递给父类的带参构造方法;
//再做其它的事情
}
void show(){
System.out.println("num = " + num);//就近原则,访问的就是子类的。
System.out.println("super.num = " + super.num);//访问父类的成员变量
}
}
class Demo
{
public static void main(String[] args)
{
B b = new B(10);
b.show();
}
}
|