【问题标题】:What is meant by calling a function by its "unqualified" name?用“非限定”名称调用函数是什么意思?
【发布时间】:2021-09-14 18:08:46
【问题描述】:
这是 Goodrich 所著的 Data Structures and Algorithms in Java 一书第一章的内容使用this 关键字的原因。
允许一个构造函数体调用另一个构造函数体。当一个类的一个方法调用当前同一个类的另一个方法时
例如,这通常是通过使用另一个的(非限定)名称来完成的
方法。但是调用构造函数的语法很特殊。 Java 允许使用
关键字 this 用作一个构造函数体内的方法,
以便调用另一个具有不同签名的构造函数。
为什么它说unqualified另一个方法的名字?
【问题讨论】:
标签:
java
function
object
this
instance
【解决方案1】:
有两种方法可以从另一个方法调用一个方法。一般来说,你会提到它的名字限定。如果我有一个对象foo 并且它有一个方法frobnicate,我会这样做
foo.frobnicate();
现在,如果我已经在正确的实例中(例如,我从 foo 上的另一个方法调用 frobnicate),那么我使用特殊变量 this。
this.frobnicate();
但是 Java 允许我们作为快捷方式省略 this 并简单地调用方法名称。以下是使用其不合格名称调用方法的示例:
frobnicate();
this. 是隐含的。
另一方面,该段落试图说明的一点是构造函数是特殊的。我们不将构造函数称为foo.frobnicate();我们只是说Foo()。所以必须有特殊的语法才能从另一个构造函数中调用一个构造函数,即this()。