如果子类中定义的成员变量和父类中成员变量同名时,子类就隐藏了从父类继承的成员变量。
当子类中定义了一个方法,并且这个方法的名字、返回类型、参数个数和类型和父类的某个方法完全相同盟时,子类从父类继承的这个方法将被隐藏。
如果在子类中想使用被隐藏的成员变量或方法就可以使用关键字
super。
1 使用关键字super调用父类的构造方法
子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且super必须是子类构造方法中的关一条语句,如例子4.23所示.
例子4.23
class Student
{
int number;
String name;
public Student()
{
}
public Student(int number,String name)
{
this.number=number;
=name;
System.out.println(" I am "+name+" my number is "+ number);
}
}
class Univer_Student extends Student
{
boolean marry;
public Univer_Student(int number,String name,boolean b)
{
super(number,name);
marry=b;
System.out.println("婚否=" + marry);
}
}
public static void Example4_23
{
public static void main(String args[])
{
Univer_Student zhang=new Univer_Student(9901,"和晓林",false);
}
}
运行结果:
I am 和晓林my number is 9901
婚否=false;
需要注意的是:如果在子类的构造方法中,没有使用关键字super调用父类的某个构造方法,那么默认有
super();
语句,即调用父类的不带参数的构造方法。
如果类时定义了一个或多个构造方法,那么Java不提供默认的构造方法(不带参数的构造方法),因此,当在父类中定义多个构造方法时,应当包括一个不带参数的构造方法,以防子类省略super时出现错
误。