【JAVA学习】This和super用法及区别
来源:互联网 发布:年轻人投资 知乎 编辑:程序博客网 时间:2024/06/16 10:08
转自:http://blog.163.com/lingshan4129@126/blog/static/777368162008625102919608/
一、基础知识
1、super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2、this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3、super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时)
如:super.变量名
super.成员函数据名(实参)
4、this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
二、应用实例
class Point
{ private int x,y;
public Point(int x,int y)
{
this.x=x; //this它代表当前对象名
this.y=y;
}
public void Draw()
{
}
public Point()
{
this(0,0); //this(参数)调用本类中另一种形成的构造函数
}
}
class Circle extends Point
{
private int radius;
public circle(int x0,int y0, int r )
{
super(x0,y0); //super(参数)调用基类中的某一个构造函数
radius=r;
}
public void Draw()
{
super.Draw(); //super它引用当前对象的直接父类中的成员
drawCircle();
}
}
this,super一个是指向当前类的对象,super是指向父类对象,其实他们的用法并不一样的.以super为例.
它主要用在构造器中,当然也有在方法中使用,我不推荐这么用,既然是重载父类的方法,就没有必要调用父类的方法,当然也不能一概而论.super在子类访问父类的成员和行为,这就必须受类继承规则的约束,也就是说子类可见的资源才能被super 访问.而this就有点不一样,他代表当前对象,当然所有的资源都可以访问.
在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.
而在方法中super和this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.
大多数情况下,我们都回采用默认的方式 ,即父类存在无参数的构造器,子类不用采用编译器默认的插入方式.但是我还是建议大家加上super()这句.这样程序的代码兼容性和结构性好.
- 【JAVA学习】This和super用法及区别
- java中super和this的区别及用法
- Java中super this 用法及区别
- JAVA中super和this的区别和用法
- java中this 和super 的区别和用法
- java中super的用法和与this的区别
- java中super的用法和与this的区别
- java中this和super关键字的用法及其区别
- java中关键字 this 和super的作用及用法
- JAVA this与super的用法区别
- this和super的区别用法
- Java中this和super的用法
- Java中的this和super的用法
- Java中的Super和this的用法
- java中this和super的用法
- Java中的this和super的用法
- Java中的this和super的用法
- java中this和super的用法
- struts2 通配符
- tankWar
- rcp(插件开发)部分开发技巧
- [生活|感悟] 谨以此纪念逝去的友人 -- 友鹏
- IPV6地址获取和校验
- 【JAVA学习】This和super用法及区别
- Ubuntu11.10下安装tinyos2.1.1
- iphone开发视频教程汇总28集_斯坦福大学课程
- 程序员技术练级攻略
- 很好的出口程序
- 互联网体验
- 开源语音格式speex教程
- 穆斯林男子的衣着规范
- 我的HTML 理解