在Java中,“调用构造函数”和“执行构造函数”之间的区别是什么?

时间:2013-10-13 23:46:17

标签: java

我真的没有一个例子,但我对这两个术语感到困惑,因为有时使用一个,有时使用另一个。

当构造函数被“调用”时它是否也“执行”了?它们可以互换吗?

此外,“call”这个词被大量使用,如“call an constructor”。

然后有“构造函数完成”。

我确信在困惑中我并不孤单,所以对一个例子的解释对我们许多新手试图理解所有术语非常有帮助。

我正在使用Bates和Sierra的书,这是让我思考它的部分:

“但是当你说新马()时会发生什么? (假设马扩展动物和动物扩展对象。) 1.调用马构造函数。每个构造函数都调用构造函数 其超类与(隐式)调用super(),除非构造函数 调用同一个类的重载构造函数(更多内容在 分钟)。 2.调用动物构造函数(Animal是Horse的超类)。 3.调用对象​​构造函数(Object是所有的最终超类 类,所以类动物扩展对象,即使你实际上没有 在“动态类”声明中输入“extends Object”。它隐含着。)At 这一点,我们在堆栈的顶部。 4.对象实例变量的显式值。通过显式值, 我们指的是在声明变量时分配的值, 比如“int x = 27”,其中“27”是显式值(而不是 实例变量的默认值)。 5.对象构造函数完成。 6.给动物实例变量赋予其显式值(如果有的话)。 7.动物构造完成。“

5 个答案:

答案 0 :(得分:4)

术语“调用”,“执行”和“调用”表示相同的内容并且可以互换。 “构造函数完成”的含义是构造函数完成其调用,执行或调用,无论您喜欢什么。

答案 1 :(得分:3)

是的,他们都意味着同样的事情。您可能希望在教科书混乱时从几个不同的来源调查有关该主题的信息。一个非常好看的地方是官方Java教程,例如在constructors上,它总是有很多简单的例子。

从技术上讲,你“调用”/“调用”一个方法,然后“执行”然后“完成”。从技术上讲,如果你有polymorphism,那么在“调用”/“调用”和“执行”步骤之间还有一个额外的步骤“查找应该执行哪种方法”。

答案 2 :(得分:1)

“调用”与“调用”相同,在讨论构造函数或任何其他方法时与“执行”相同。

构造函数只是另一种方法,虽然是一种特殊方法。

答案 3 :(得分:0)

最好的理解方法是提供代码示例:

class Animal {

    public Animal(){}

}

class Horse extends Animal {

    public Horse(){
        super();//this line will be added by the compiler even if you didn't type it.
    }

    public Horse(String name){
        this(); //this line will call the default constructor.
    }

}

调用构造函数正在从其类创建一个实例:

Horse horse = new Horse();

通过以下方式调用构造函数:

super();//in our case it will call Animal constructor

this();//this will call the default constructor of the same class.

并通过调用或调用它来执行构造函数。

答案 4 :(得分:-2)

我很确定一旦创建了对象,或者构造函数被自动调用或调用或实际执行,它们就是相同的。