博客
关于我
# This 关键字的用法总结
阅读量:493 次
发布时间:2019-03-07

本文共 1159 字,大约阅读时间需要 3 分钟。

Java关键字"this"的用法总结

1. this的介绍

this是一个关键字,它表示"对象本身"。简单来说,它是指向当前对象的引用。在Java中,"this"关键字非常重要,它用于区分类中的成员变量或方法与其他同名元素。

例如,在类中的构造器方法中,"this"指向正在被构造的对象。它可以用于调用类中的成员方法或者访问类中的成员变量。

类似的,在类的方法中使用"this"的关键在于当方法的参数名与类的成员变量名重复时,可以使用"this.变量名"来明确表示当前类的成员变量。这种做法可以帮助编译器区分不同的作用域。

2. 调用本类方法

在Java中,"this"关键字的另一个重要用途是调用本类的方法。当一个方法的引用参数和本类的成员变量名冲突时,可以通过在方法名之前加上"this"来明确表示要调用本类的方法。

例如:

public void setAge(int age) { this.age = age; }

在上述代码中,"this.age"明确表示访问的是当前对象的成员变量。这一点与直接使用"age"来表示成员变量会有所区别,因为当方法参数名与成员变量名重复时,编译器可能会产生歧义。

3. 调用本类成员变量

在调用本类成员变量时,当方法的形式参数与成员变量的名称重复时,必须使用"this"来明确区分。例如:

public int getAge(int age) { this.age = age; return age; }

在这种情况下,"this.age"确保我们访问的是当前对象的成员变量。这与不使用"this"时会发生的歧义不同,后者可能会导致编译错误。

需要注意的是,即使没有使用"this",编译器会给出警告提示,指出这条语句没有实际意义。因此,使用"this"可以避免这种警告的出现。

4. this与super的比较

"super"和"this"虽然都用于表示对象,但它们的用途和作用完全不同。

super是一个关键字,它用于调用父类的构造器或访问父类的隐藏成员。

super必须位于构造器方法的第一行,因为它需要立即初始化父类对象。例如:

public class SubClass extends ParentClass { public SubClass() { super(); } }

相比之下,这用于调用另一个构造器的"this"关键字可以在任何时间使用,但通常我们只会在构造器方法中使用它来初始化当前对象。

需要注意的是:在构造器方法中,"super"和"this"不能同时使用,因为它们的作用互相排斥。

此外,"super"和"this"都不能在静态上下文中使用。例如,不能在static方法或者static变量中使用它们。这是因为静态上下文无法引用对象本身。

转载地址:http://hqwcz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现埃拉托斯特尼筛法算法(附完整源码)
查看>>
Objective-C实现域名解析(附完整源码)
查看>>
Objective-C实现域名转IP(附完整源码)
查看>>
Objective-C实现培根密码算法(附完整源码)
查看>>
Objective-C实现基于 LIFO的堆栈算法(附完整源码)
查看>>
Objective-C实现基于 LinkedList 的添加两个数字的解决方案算法(附完整源码)
查看>>
Objective-C实现基于opencv的抖动算法(附完整源码)
查看>>
Objective-C实现基于事件对象实现线程同步(附完整源码)
查看>>
Objective-C实现基于信号实现线程同步(附完整源码)
查看>>
Objective-C实现基于文件流拷贝文件(附完整源码)
查看>>
Objective-C实现基于模板的双向链表(附完整源码)
查看>>
Objective-C实现基于模板的顺序表(附完整源码)
查看>>
Objective-C实现基本二叉树算法(附完整源码)
查看>>
Objective-C实现堆排序(附完整源码)
查看>>
Objective-C实现填充环形矩阵(附完整源码)
查看>>
Objective-C实现声音录制播放程序(附完整源码)
查看>>
Objective-C实现备忘录模式(附完整源码)
查看>>
Objective-C实现复制粘贴文本功能(附完整源码)
查看>>
Objective-C实现复数类+-x%(附完整源码)
查看>>
Objective-C实现外观模式(附完整源码)
查看>>