调用函数的「非限定(unqualified)名称」是什么含义?结合Java语法解析
什么是Java中调用方法的「非限定(unqualified)名称」
指的是调用同类当前实例的方法时,不需要加任何限定前缀(比如this.、实例对象名、类名),直接书写方法名加参数列表完成调用的写法。
代码示例
public class Person { private String name; private int age; // 普通方法示例 public void introduce() { // 直接调用printInfo()就是非限定名称调用 printInfo(); // 等价于带限定符this的写法:this.printInfo(); } public void printInfo() { System.out.println("姓名:" + name + ",年龄:" + age); } // 结合原文语境补充构造函数的特殊规则 public Person(String name) { // 调用另一个构造函数不能直接写Person(name, 0),必须用this限定 this(name, 0); } public Person(String name, int age) { this.name = name; this.age = age; } }
普通实例方法调用时,非限定名称写法是Java默认允许的语法糖,编译器会自动给调用的方法补全this.前缀,指定调用当前实例的对应方法。但构造函数调用没有对应的语法糖,必须显式通过this(参数列表)的形式调用同类其他构造函数,这也是原文用来解释this关键字作用的核心逻辑。
内容的提问来源于stack exchange,提问作者nayan
相关产品推荐
相关产品推荐

