您的位置:首页 > 其它

谈谈我对super和this的理解

2010-09-24 23:52 281 查看
1、super不是父类的引用(System.out.println(super)会报错),但是用他可以调用父类的方法和属性;

而this是指当前对象的引用;(注意:他们都是针对对象的,如果该对象不存在,则不能使用)。

2、在子类中调用super.XXX(),和this.XXX()方法,其中如果XXX()方法是继承自Object类中的方法,则此时的super就等于this的效果即super可以用this取代。看下面的例子:

父类Extends



package cn.lx.test;



public class Extends {

}

子类ExtendsClass



package cn.lx.test;

public class ExtendsClass extends Extends{



public static void main(String[] args) {

ExtendsClass ec = new ExtendsClass();
ec.dos();

}

@Override
public void dos() {
// TODO Auto-generated method stub
// super.dos();

System.out.println("---------------------");

System.out.println(super.toString()==this.toString());

System.out.println(this.toString()==this.toString());//看Object的toString()源码
System.out.println(super.toString().equals(this.toString()));

System.out.println(super.equals(this));



System.out.println(super.getClass()==this.getClass());

System.out.println(super.getClass());

System.out.println(this.getClass().getSuperclass());

System.out.println(super.hashCode()==this.hashCode());

System.out.println(super.toString());
System.out.println(Integer.toHexString(super.hashCode()));


System.out.println("---------------------");


}
}
运行结果是

---------------------
false
false
true
true
true
class cn.lx.test.ExtendsClass
class cn.lx.test.Extends
true
cn.lx.test.ExtendsClass@c17164
c17164
---------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: