在父类构造器中使用子类中被重写的方法

来源:互联网 发布:stc12c5a60s2烧录软件 编辑:程序博客网 时间:2024/05/18 00:09

请看代码

package 憨八龟;
//好像懂了               JAVA有一种无歧义性              注重安全性        尽量无歧义               处理的很好了
public class hbg {
public static void main(String[] args)
{
hbg0 H=new hbg0();  
hbg1 g=new hbg1();
}
}
 class hbg0 extends hbg1{
private String name="憨八龟";
public int number=10;
public hbg0()
{
System.out.println("name:"+name+"   "+"number:"+number);
}
public void shuchu()
{
System.out.println("笨");
}
}
class hbg1 extends hbg00{
public String name1="夏洛克";
public int number1=99;
public int number=22;
public hbg1()
{
shuchu();
//System.out.println("name1:"+name1+"   "+"number1:"+number1+"   "+this.number);
}
public void shuchu()
{
System.out.println("天才");
}
public void asd()
{
System.out.println("aaaaa");
}
}
class hbg00{
public String name1="夏洛克";
public int number1=99;
public int number=22;
public hbg00()
{
//shuchu();
}
public void shuchu()
{
this.number=100;
System.out.println("天ya");
}
public void asd()
{
System.out.println("aaaaa");
}
}

创建一个hbj0对象会调用父类的构造方法,父类中的构造方法还会调用它的父类中构造方法,(创建对象一定调用构造方法,而调用构造方法不一定创建了对象)(例如本例,虽然调用了两个构造方法,然而并没有创建出两个对象,知识把子类中属于父类的部分初始化了,仅此而已,)那么为什么我在终极父类中调用shuchu(),他会调用子类的方法呢,原因在于,你在调用方法是,是在堆中使用一个shuchu();这个方法,他指向程序段对应的输出方法,而在方法段的内部有一个this。他指向调用方法的当前对象,指向当前的对象所以使用子类中的shuchu()方法,                  下面的实例化对象可以验证一下。  OK?

0 0