继承是java的基本特性之一,子类继承自父类(基类,超类),则子类将自动获得父类的所有可见方法(非Private方法,如同package也包括包权限的成员变量及方法)及成员变量,并可在此基础上重载父类的方法或添加子类特有的方法.为什么子类的对象会有父类的方法呢?子类的对象是怎么建立的呢?
当创建一个子类对象的时候,同时也创建了一个父类的对象,并且父类的对象包含在该子类对象的内部.具体的创建过程为:先创建父类的对象,然后按照继承的树型关系,逐层创建出子类的对象,即父类在子类的构造器可以访问它之前,就已经完成的初始化.请看下面的代码:
输出结果为:
Art constructor!
Drawing constructor!
SonInit constructor!
结论为:创建过程为从基类开始,向外扩散的!
当创建一个子类对象的时候,同时也创建了一个父类的对象,并且父类的对象包含在该子类对象的内部.具体的创建过程为:先创建父类的对象,然后按照继承的树型关系,逐层创建出子类的对象,即父类在子类的构造器可以访问它之前,就已经完成的初始化.请看下面的代码:
class
Art
{
Art()
{
System.out.println("Art constructor!");
}
}
class Drawing extends Art
{
Drawing()
{
System.out.println("Drawing constructor!");
}
}
public class SonInit extends Drawing
{
public SonInit()
{
System.out.println("SonInit constructor!");
}
public static void main(String[] args)
{
SonInit son = new SonInit();
}
}
{
Art()
{
System.out.println("Art constructor!");
}
}
class Drawing extends Art
{
Drawing()
{
System.out.println("Drawing constructor!");
}
}
public class SonInit extends Drawing
{
public SonInit()
{
System.out.println("SonInit constructor!");
}
public static void main(String[] args)
{
SonInit son = new SonInit();
}
}
Art constructor!
Drawing constructor!
SonInit constructor!
结论为:创建过程为从基类开始,向外扩散的!