子类的实例化过程
注意:super语句一定定义于子类构造函数的第一行
结论:子类的所有构造函数,默认都会访问父类中空参数的构造函数
因为子类每一个构造函数内的第一行都有一句隐式super();
当父类中没有空参数构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数
当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数
子类中至少会有一个构造函数会访问父类中的构造函数
this和super都只能写第一行
class Fu //extends Object
{
Fu()
{
System.out.println("Fu");
}
Fu(int x)
{
System.out.println("FU...."+x)
}
}
class Zi extends Fu
{
Zi()
{
//super();省略了super();
System.out.println("zi run");
}
Zi(int x)
{
//this();
//super();//省略了super();
System.out.println("zi...."+x);
}
}
class Person
{
private String name;
Person(String name)
{
this.name = name;
}
void show(){}
}
class Student extends Person
{
Student(String name)
{
super(name);//父类定义完的内容子类想要用,构造函数用super()
}
void method()
{
super.show();//一般函数用super.
}
}
class ExtendsDemo4
{
public static void main(String[] args)
{
Zi z1= new Zi(4);//输出fu,zi...+4
Zi z = new Zi();//输出fu,zi
}
}
网友评论