1

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

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

此外,“调用”一词也被大量使用,例如“调用构造函数”。

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

我敢肯定,我并不孤单,所以用一个例子来解释对于我们许多试图理解所有术语的新手来说非常有帮助。

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

像“int x = 27”,其中“27”是实例变量的显式值(与默认值相反)。5. 对象构造完成。6. 动物实例变量被赋予其明确的值(如果有的话)。7. 动物构造器完成。”

4

5 回答 5

4

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

于 2013-10-13T23:49:39.450 回答
3

是的,它们的意思都是一样的。每当教科书变得混乱时,您可能希望从几个不同的来源调查有关该主题的信息。一个很好的地方是官方的 Java 教程,例如 on constructors,它总是有很多简单的例子。

从技术上讲,您“调用”/“调用”一个方法,然后它被“执行”然后“完成”。从技术上讲,如果你有多态性,那么在“调用”/“调用”和“执行”步骤之间还有一个额外的步骤“查找应该真正执行的方法”。

于 2013-10-13T23:52:59.213 回答
1

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

构造函数只是另一种方法,尽管是一种特殊的方法。

于 2013-10-13T23:49:56.407 回答
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.

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

于 2013-10-14T00:11:47.027 回答
-2

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

于 2013-10-13T23:55:25.890 回答