Java中super关键字的使用
1、使用super操作呗隐藏的成员变量和方法
子类一旦隐藏了继承的成员变量,那么子类创建的对象就不再拥有该变量,该变量将归super所拥有。同样的,对于隐藏的方法调用也是有super所有。下面将举例说明用法:
public class SuperTest {
static class Sum{
int n;
int f(){
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
}
static class Average extends Sum{
int n;
float a(){
super.n = n;
float c;
c = super.f();
return c/n;
}
}
public static void main(String[] args) {
Average average = new Average();
average.n = 100;
float a = average.a();
System.out.println("平均值为:" + a);
}
}
输出结果为:平均值为:50.5
2、使用super调用父类的构造方法
当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,也就是说,如果子类的构造方法没有明显的指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。
**由于子类不继承父类的构造方法,因此,子类在其构造方法中需要使用super来调用父类的构造方法,而且super必须是子类构造方法中的头一条语句。**即如果在子类的构造方法中没有明显的写出super关键字来调用父类的构造方法时,则默认有super();
public class SuperTest01 {
static class Student{
int number;
String name;
//无参构造
Student(){
}
//有参构造
Student(int number,String name){
this.number = number;
this.name = name;
System.out.println("我的名字是:" + name + "\n" + "我的学号是:" + number);
}
}
static class UniverStudent extends Student{
boolean married;
UniverStudent(boolean married, int number, String name){
super(number,name);
this.married = married;
System.out.println("婚否:" + married);
}
}
public static void main(String[] args) {
UniverStudent univerStudent = new UniverStudent(false, 101, "小梁");
}
}
输出结果:
我的名字是:小梁
我的学号是:101
婚否:false
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/147359.html