5.5 super关键字
- 参考书籍:Java面向对象程序设计(第二版)--耿祥义 张跃平编著
1使用super调用父类的构造方法
子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,必须使用关键字super来表示,而且super必须是子类构造方法中的头一条语句
比如A类中
A(){ //不带参数的构造方法
}
A(int a,int b){ //带两个参数的构造方法
this.a=a;
This.b=b;
}
子类B中
B(int a,int b,int c){
Super(int a,int b); //调用父类的构造方法,即执行A(int a,int b)
} //子类构造方法,super放在第一条
注意:
(1)如果在子类的构造方法中,没有明显写出super关键字来调用父类的某个构造方法,默认有: Super();语句,即调用父类不带参数的构造方法。
- 如果类中定义了一个或者多个构造方法,那么java不提供默认的构造方法(不带参数的构造方法),为防止子类省略super时出错,应当在父类多定义一个不带参数的构造方法。
2 使用super操作被隐藏的成员变量和方法
比如 super.x; //访问和调用子类隐藏的成员变量x
Super.a(); //访问和调用子类隐藏的方法a()
注意:
子类创建一个对象时
子类声明的和继承的成员变量-------分配内存(内存单元属于子类对象)
被隐藏的成员变量-------分配内存(内存单元不属于任何对象,必须要super调用)
方法也一样,不过super调用隐藏的方法时,该方法出现的成员变量是指被隐藏的成员变量