class fu
{
public int a;
public void fun()
{
System.out.println(a);
}
}
class zi extends fu
{
public static void main(String[] args)
{
zi s=new zi();
s.fun();
}
}
//输出的结果是0,父类的a有默认值,是不是说明父类的对象也存在。
{
public int a;
public void fun()
{
System.out.println(a);
}
}
class zi extends fu
{
public static void main(String[] args)
{
zi s=new zi();
s.fun();
}
}
//输出的结果是0,父类的a有默认值,是不是说明父类的对象也存在。
以此类推,直到到Object的构造函数完成,再一层层的下来。换而言之,表述应该是,所有出现父类的地方,都一定可以用子类代替,反之不然。但是子类与父类并不是严格意义的包含关系。不能说,构造一个子类实例会创建父类对象,只能说需要用到父类的地方,都可以使用子类去替代它。
由于子类继承了父类,因此子类中也会存在数据成员a(继承是这样体现的),而不是使用了父类定义的那个a。
所以仅仅只是调用了父类的构造器,并没有创建父类的实例