Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
任何人都可以告诉我何时进行初始构造函数初始化和调用。它发生在编译时还是运行时。即使我相信它会在运行时发生,但是当有人问到时,编译器如何在不进行构造函数初始化的情况下检查父子关系,这让我感到困惑。例如
我们有一个父类
编辑
在不调用
如果你这样做
那么您只能调用Object拥有的方法,因为编译器无法知道s是College
想改善这个问题吗?添加详细信息并通过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