Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        6年前关闭。
                    
                
        

任何人都可以告诉我何时进行初始构造函数初始化和调用。它发生在编译时还是运行时。即使我相信它会在运行时发生,但是当有人问到时,编译器如何在不进行构造函数初始化的情况下检查父子关系,这让我感到困惑。例如

我们有一个父类College和一个子类Department

编辑

class College
{
  public String getCollegeName()
  {
   return "ABC College";
  }
}

class Department extends College
{
  public static void main(String args[])
  {
    College s = new Department();
    System.out.println(s.getCollegeName());
    System.out.println(s.getDepartName());
  }

  public String getDepartName()
  {
   return "IT Department";
  }
}


在不调用Department s = new College()的情况下,编译器如何才能知道s具有派生的getDepartName()方法。

最佳答案

它在运行时发生。 “编译器如何知道s具有派生的getCollegeName()方法。” -因为编译器知道s是College的实例,而College具有方法getCollegeName()。您告诉s是College的一个实例

College s


如果你这样做

Object s = new College();


那么您只能调用Object拥有的方法,因为编译器无法知道s是College

关于java - 构造函数的初始初始化和调用是在运行时还是编译时完成的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22436093/

10-10 20:08