java中的super关键字具有以下两个功能
1. 通过它可以在子类的构造方法中调用父类的某个构造方法,而且super()语句必须是子类构造方法中的头一条语句
注意:如果在子类的构造方法中没有使用关键字super调用父类的某个构造方法,那么默认有super();语句,即调用父类的不带
参数的构造方法(该构造方法不是父类中的默认构造方法,而是自定义的构造方法)
eg: class Student
{
Student(String name,int age)
{
System.out.println("my name is "+name+", i am "+age);
}
}
class Uni_Student extends Student
{
Uni_Student(String name,int age,boolean b)
{
super(name,age);
System.out.println("婚否="+b);
}
}
public class class1_1
{
public static void main(String args[])
{
Uni_Student aa=new Uni_Student("zhangsan",22,false);
}
}
运行以后的结果为:
my name is zhangsan, i am 22
婚否=false
2. 通过它可以使用被子类隐藏了的父类中的成员变量和方法,即:super.成员变量名 或 super.方法名
eg: class sum
{
int n;
float f()
{
int sum=0;
for(int i=0;i<=n;i++)
sum=sum+i;
return sum;
}
}
class average
{
int n;
float f()
{
super.n=n;
return super.f()/n;
}
float g()
{
super.n=n;
return super.f()/2;
}
}
public class class4_1
{
public static void main(String args[])
{
average aa=new average();
aa.n=10;
System.out.println(aa.f());
System.out.println(aa.g());
}
}
运行后的结果为:
5.5
27.5