1.this指代当前对象,super指代父类
2.每当创建一个对象后,java虚拟机会给这个对象分配一个引用自身的指针,这个指针的名字就是this,因此this只能在类非静态方法中使用,静态方法,语句块绝对不能出现this.
this是和对象关联,不是类关联,因此同一个类的不同对象有不同的this
3.函数参数或变量名与成员变量同名的时候,成员变量被屏蔽,此时要访问成员变量则需要“this.成员变量名”的方式来引用成员变量。当然在没有同名的情况下,也可以使用“this.成员变量名”的方式来引用成员变量,也可以不使用
package com.sxt.Tread;
/**
* @author jt
*2015-12-5 下午8:31:32
*
*/
public class Test {
private String name;
private int age;
public void test(String name)
{
this.name="jt";
name="mmm";
age=100;
System.out.println(name);
System.out.println(this.name);
System.out.println(age);
}
/**
* @param args
*/
public static void main(String[] args) {
new Test().test("jiangtao");
}
}
输出结果:
mmm
jt
100
4.通过this调用类的构造方法this(参数),这仅仅在类的构造方法中使用,其他方法不能这么用。
5.调用super()父类的构造函数只能在的之类构造函数的第一行
6.super调用父类的构造方法super(参数),调用父类的方法super.方法名
7.当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的;当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法