利用super操作被隐藏的成员变量和方法
如果子类一旦隐藏了继承的成员变量,子类创建的对象就没办法拥有该变量,就访问不了了。
那么这个被隐藏的变量就归为关键字super所有。
你可以通过super召唤它。super就好像铠甲勇士变身棒。将前世的超级英雄叫出来打怪兽。你好snack张大炮嘿嘿。
举个栗子
public class Sum {
int n;
float f(){
float sum = 0;
for(int i = 1;i <= n;i++){
sum+= i;
}
return sum;
}
}
public class Average extends Sum{
int n;
float f(){
float c;
super.n = n;
c = super.f(); //通过super调用的是原来父类的f()方法
return c/n;
}
}
public class Example7 {
public static void main(String args[]){
Average average = new Average();
average.n = 99;
float result = average.f();
System.out.println(result);
}
}
值得注意的是:
子类不继承父类的构造方法,大家还记得什么是构造方法吗?小白的我有点不记得了。
类这个里面有哦
那么我们怎么调用这个父类的构造方法呢?
在子类的构造方法里利用super关键字调用父类的构造方法,别晕。
super();
什么看不懂?别打我
public class Student {
int number;
String name;
Student(int number,String name){ //父类的构造方法
this.name = name;
this.number = number;
System.out.println("名字是"+name);
System.out.println("学号是"+number);
}
}
public class UniverStudent extends Student{
boolean 婚否;
UniverStudent(int number, String name,boolean b) { //子类的构造方法
super(number, name); //子类的构造方法里面调用父类的构造方法,看到没朋友!骚不骚。
婚否 = b;
System.out.println("婚否="+婚否);
}
}
public class Example5_8 {
public static void main(String args[]){
UniverStudent student;
student = new UniverStudent(0720,"胡潇天",false);
}
}
等等,我们不是说可以有很多构造方法吗?那我们如果父类有好几个构造方法
那我们利用这个super到底调用的那个??
默认情况下,我们super调用的是没有参数的那个父类的构造方法哦。