小编Sum*_*try的帖子

创建基类对象时的运行时多态性

请考虑以下代码.

class Base{
  Base() {  
      print();   
  }
  void print() { 
      System.out.println("Base"); 
  }
}

class Child extends Base{
   int i =   4;
   public static void main(String[] args){
      Base base = new Child();
      base.print();
   }
   void print() { 
       System.out.println(i); 
   }
}
Run Code Online (Sandbox Code Playgroud)

该程序将打印0,4.

我理解的是,将根据实际对象的类来选择要执行的方法,因此在这种情况下是Child.因此,当Base调用构造函数时,调用print方法,Child这样就会打印0,4.

请告诉我是否理解正确吗?如果是,我还有一个问题,而基类构造函数正在运行JVM如何调用Child方法,因为Child没有创建对象?

java

9
推荐指数
1
解决办法
199
查看次数

标签 统计

java ×1