Java关键字介绍之this与super

1.什么是super?什么是this

super关键字表示超(父)类的意思。this变量代表对象本身。

2.使用super&this调用成员变量和方法

可以使用super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是从超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。见示例1。

当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量。见示例2。

示例1


class Person {

protectedvoid print() {

System.out.println("The print() in class Person.");

}

}

publicclass DemoSuper
extends Person {

publicvoid print() {

System.out.println("The print() in class DemoSuper.");

super.print();//
调用父类的方法

}

publicstaticvoid main(String[] args) {

DemoSuper ds =
new
DemoSuper();

ds.print();

}

}

结果:

The print() in class DemoSuper.

The print() in class Person.

示例2


publicclass DemoThis {

private String
name;

publicvoid setName(String name) {

this.name = name;//
前一个name是private name;后一个name是setName中的参数。

}

}

3.使用this表示当前调用方法的对象引用

假设你希望在方法的内部获得对当前对象的引用,可使用关键字this。this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。见示例3。

示例3


Button bn;

bn.addActionListener(this);

4.使用super&this调用构造子

super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)。见示例4。

this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)。 见示例5。

示例4


class Person {

publicstaticvoid prt(String s) {

System.out.println(s);

}

Person() {

prt("A Person.");

}

Person(String name) {

prt("A person name is:" + name);

}

}

publicclass Chinese
extends Person {

Chinese() {

super();//
调用父类构造函数。

prt("A chinese.");

}

Chinese(String name) {

super(name);//
调用父类具有相同形参的构造函数。

prt("his name is:" + name);

}

publicstaticvoid main(String[] args) {

Chinese cn = new Chinese();

cn = new Chinese("kevin");

}

}

结果:

A Person.

A chinese.

A person name is:kevin

his name is:kevin

示例5


Point(int a,int b){

x=a;

y=b;

}

Point(){

this(1,1);
//调用point(1,1),必须是第一条语句。

}

5.使用super&this应该注意些什么?

1)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。

2)super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。

3)super()和this()均需放在构造方法内第一行。

4)尽管可以用this调用一个构造器,但却不能调用两个。

5)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。

6)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

6.参考资料

[1]Thinking in Java 3rd

[2] this super 在java里使用时应注意的地方

[url]http://hengdao325200.blog.163.com/blog/static/340522006626114027/[/url]

[3] Java 类体中的this、super的正确用法

[url]http://xiaocao000.spaces.live.com/Blog/cns!F[/url]826A925CF33491A!126.entry

7.相关介绍

Java关键字介绍之static

Java关键字介绍之final

时间: 2024-10-01 05:55:41

Java关键字介绍之this与super的相关文章

Java关键字介绍

关键字 描述 abstract 抽象方法,抽象类的修饰符 assert 断言条件是否满足 boolean 布尔数据类型 break 跳出循环或者label代码段 byte 8-bit 有符号数据类型 case switch语句的一个条件 catch 和try搭配扑捉异常信息 char 16-bit Unicode字符数据类型 class 定义类 const 未使用 continue 不执行循环体剩余部分 default switch语句中的默认分支 do 循环语句,循环体至少会执行一次 doub

Java关键字(六)——super

在 Java关键字(五)——this 中我们说 this 关键字是表示当前对象的引用.而 Java 中的 super 关键字则是表示 父类对象的引用. 我们分析这句话“父类对象的引用”,那说明我们使用的时候只能在子类中使用,既然是对象的引用,那么我们也可以用来调用成员属性以及成员方法,当然了,这里的 super 关键字还能够调用父类的构造方法.具体有如下几种用法: 1.调用父类的构造方法 Java中的继承大家都应该了解,子类继承父类,我们是能够用子类的对象调用父类的属性和方法的,我们知道属性和方

Java关键字this、super使用总结

版权声明:原创作品,如需转载,请与作者联系.否则将追究法律责任. 作者:熔岩日期:2007-03-01MSN :[email protected]声明:原创作品,未经授权,谢绝转载! 好久没有对所学知识做总结了,发现好多都生疏了,为了巩固基础,对就知识做一个系统的总结,如有不完善或不正确的地方,还请各位广开言论,共同进步! 一.this        Java关键字this只能用于方法方法体内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是th

JAVA构造方法,继承关系和SUPER关键字

SUPER可调用父类的构造方法,但要注意默认调用和参数调用. 同时,在继承类时,可以用SUPER调用其它非构造方法哟. class Test extends Object{ public Test(){ System.out.println("Test1 First thing"); } public Test(String welcome){ System.out.println("Test1 " + welcome); } protected void doSo

JAVA基础(十六)Super关键字

Super关键字: Super关键字的特点: This  与super 不能同时存在第一行: 构造方法第一行都有一个默认语句 super()无参构造: 私有化后显示定义无法在用默认, 空参时先调父类构造在子类构造,因为默认语句 super() 第一行只要this在就没有super. super的调用: super:代表当前对象父类的引用 super.成员变量 调用父类的成员变量 super(…) 调用父类的构造方法 super.成员方法 调用父类的成员方法 //定义Person类,将Studen

Java关键字

Java的关键字[个人整理] 关键字总览:-----------abstract.assert.boolean.break.byte.case.catch.char.class.continue.default.do.double.else.enum.extends.final.finally.float.for.if.implements.import.instanceof.int.interface.long.native.new.package.private.protected.publ

Java注解介绍

原文链接: Java Annotations: An Introduction原文日期: 2005年10月14日翻译日期: 2014年07月20日翻译人员: 铁锚 翻译完后,感觉这篇文章是不是在http://www.developer.com被挖坟了? Java注解介绍 基于注解(Annotation-based)的Java开发无疑是最新的开发趋势.[译者注: 这是05年的文章,在2014年,毫无疑问,多人合作的开发,使用注解变成很好的合作方式,相互之间的影响和耦合可以很低]. 基于注解的开发将

java关键字及其作用

一. 关键字总览: 访问控制 private protected public             类,方法和变量修饰符 abstract class extends final implements interface native new static strictfp synchronized transient volatile           程序控制 break continue return do while if else for instanceof switch ca

java 关键字与保留字

Java 关键字列表 (依字母排序 共51组),所有的关键字都是小写,在MyEclipse中都会显示不同的颜色: abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, i