- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关键字this与super
Java关键字this、super使用总结
?
一、this??????? Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。下面给出一个使用this的综合实例,以便说明问题:
?
package org.leizhimin;
public class Test6 {
?private int number;?private String username;?private String password;?private int x = 100;
?public Test6(int n) {??number = n; ?// 这个还可以写为: this.number=n;?}
?public Test6(int i, String username, String password) {??// 成员变量和参数同名,成员变量被屏蔽,用this.成员变量的方式访问成员变量.??this.username = username;??this.password = password;?}
?// 默认不带参数的构造方法?public Test6() {??this(0, 未知, 空); // 通过this调用另一个构造方法?}
?public Test6(String name) {??this(1, name, 空); // 通过this调用另一个构造方法?}
?public static void main(String args[]) {??Test6 t1 = new Test6();??Test6 t2 = new Test6(游客);??t1.outinfo(t1);??t2.outinfo(t2);?}
?private void outinfo(Test6 t) {??System.out.println(-----------);??System.out.println(t.number);??System.out.println(t.username);??System.out.println(t.password);??f(); // 这个可以写为: this.f();?}
?private void f() {??// 局部变量与成员变量同名,成员变量被屏蔽,用this.成员变量的方式访问成员变量.??int x;??x = this.x++;??System.out.println(x);??System.out.println(this.x);?}??//返回当前实例的引用?private Test6 getSelf() {??return this;??}?
??????? 看着上面的例子,说明在什么情况下需要用到this:??????? 第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。??????? 第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。??????? 第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
??????? 其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
?
二、super
??????? super关键和this作用类似,是被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(就是类之上最近的超类)。下面是一个综合运用super的例子,有两个类:一个Father类,一个Father类的子类Son,通过这两个类完全演示了super的用法,一下是代码:?
package org.leizhimin;
public class Father {?public String v=Father;?public String x=输出了Father类的public成员变量x!!!;??public Fathe
文档评论(0)