class Base
{
//定义了一个名为i的实例变量
private int i = 2;
public Base()
{
//直接输出this.i
System.out.printf("Base() %d\n",this.i);
this.display();
//输出this实际的类型,将看到输出Derived
System.out.println("public Base() "+this.getClass());
//因为this的编译类型是Base,所以依然不能调用sub()方法,
//this.sub();
}
public void display()
{
System.out.printf("Base::display() %d\n",i);
}
}
//继承Base的Derived子类
class Derived extends Base
{
//定义了一个名为i的实例变量
private int i = 22;
//构造器,将实例变量i初始化为222
public Derived()
{
i = 222;
System.out.println("public Derived() "+this.getClass());
System.out.printf("Derived() ,i=%d\n",i);
this.display();
}
public void display()
{
System.out.printf("Derived::display() %d\n",i);
}
public void sub(){}
}
public class Test3
{
public static void main(String[] args)
{
//创建Derived的构造器创建实例
new Derived();
}
}
/*
Base() 2
Derived::display() 0
public Base() class Derived
public Derived() class Derived
Derived() ,i=222
Derived::display() 222
请按任意键继续. . .
*/
class Base
{
//定义了一个名为i的实例变量
int i = 2;
public Base()
{
//直接输出this.i
System.out.printf("Base() %d\n",this.i);
this.display();
//输出this实际的类型,将看到输出Derived
System.out.println("public Base() "+this.getClass());
//因为this的编译类型是Base,所以依然不能调用sub()方法,
//this.sub();
}
public void display()
{
System.out.printf("Base::display() %d\n",i);
}
}
//继承Base的Derived子类
class Derived extends Base
{
//定义了一个名为i的实例变量
//private int i = 22;
//构造器,将实例变量i初始化为222
public Derived()
{
i = 222;
System.out.println("public Derived() "+this.getClass());
System.out.printf("Derived() ,i=%d\n",i);
this.display();
}
public void display()
{
System.out.printf("Derived::display() %d\n",i);
}
public void sub(){}
}
public class Test3
{
public static void main(String[] args)
{
//创建Derived的构造器创建实例
new Derived();
}
}
/*
Base() 2
Derived::display() 2
public Base() class Derived
public Derived() class Derived
Derived() ,i=222
Derived::display() 222
请按任意键继续. . .
*/