您的位置:首页 > 编程语言 > Java开发

Java(二) this 和super 详解

2015-04-16 14:08 295 查看
老忘记的一些理论知识,发现这篇文章比较详细,先保存下来,以后还会完善。

--------------------------------------------------------------------------------------------------------


this和super的区别

No.
区别
this
super
1
操作属性
this.属性:表示调用本类中的属性,如果本类中的属性不存在,则从父类查找
super.属性:表示调用父类中的属性
2
操作方法
this.方法():表示调用本类中的方法,如果本类中的方法不存在,则从父类查找
super.方法():表示调用父类中的方法
3
调用构造
this()调用本类中的其他构造方法
super():由子类调用父类中的构造方法
4
查找范围
先从子类中查找,如果没有从父类中查找
不查子类直接查找父类
5
特殊
当前对象
-
既然this和super都可以调用构造,那么这两者绝对不能同时出现,因为只要是调用构造,就必须将语句放在构造方法的首行,而且以后开发的时候建议明确的写出“this.方法”或者“super.方法()”,这样便于代码的维护。
--------------------------------------------------------------------------------------------------------


[plain] view
plaincopyprint?

最好把super和this放在一起,对比着理解。

super指向父类,用于引用父类的构造方法。

this指向本类,用于引用本类中的其他方法。

这么说太抽象,下边是一个很经典的例子,完全体现了super和this的用法和区别,请花几分钟把它读完:

class Person {

public static void prt(String s) {

System.out.println(s);

}

Person() {

prt("A Person.");

}//构造方法(1)

Person(String name) {

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

}//构造方法(2)

}

public class Chinese extends Person {

Chinese() {

super(); // 调用父类构造方法(1)

prt("A chinese.");// (4)

}

Chinese(String name) {

super(name);// 调用父类具有相同形参的构造方法(2)

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

}

Chinese(String name, int age) {

this(name);// 调用具有相同形参的构造方法(3)

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

}

public static void main(String[] args) {

Chinese cn = new Chinese();

cn = new Chinese("kevin");

cn = new Chinese("kevin", 22);

}

}

执行结果为:

A Person.

A chinese.

A person name is:kevin

his name is:kevin

A person name is:kevin

his name is:kevin

his age is:22

下边总结一下super和this的异同:

1)super(参数):调用父类的构造方法 。

2)this(参数):调用本类的其他构造方法。

3)都必须放在构造方法的第一行。

3)super:引用父类中的成员,当子类和父类中的方法重名时,这样用。

4)this:代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)。

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

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

--------------------------------------------------------------------------------------------------------


(十分感谢)转自: http://blog.csdn.net/tanyit/article/details/6946443
相关文章: http://www.jb51.net/article/44589.htm http://zhangjunhd.blog.51cto.com/113473/20531/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: