this编译类型是Base,运行类型Derived

来源:互联网 发布:阿里云可以玩游戏嘛 编辑:程序博客网 时间:2024/05/20 21:45
class Base {//定义了一个名为i的实例变量private int i = 2;public Base() {//直接输出this.iSystem.out.printf("Base() %d\n",this.i);this.display();//输出this实际的类型,将看到输出DerivedSystem.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初始化为222public 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() 2Derived::display() 0public Base()  class Derivedpublic Derived() class DerivedDerived() ,i=222Derived::display() 222请按任意键继续. . .*/
class Base {//定义了一个名为i的实例变量 int i = 2;public Base() {//直接输出this.iSystem.out.printf("Base() %d\n",this.i);this.display();//输出this实际的类型,将看到输出DerivedSystem.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初始化为222public 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() 2Derived::display() 2public Base()  class Derivedpublic Derived() class DerivedDerived() ,i=222Derived::display() 222请按任意键继续. . .*/


原创粉丝点击