先发个例子看看 public class Test { public static void main(String[] args) { A a = new B(); a.testMethod(100000); } } class A{ public int i = 10; public void testMethod(int i){ System.out.println(i); System.out.println(this.i); } } class B extends A{ public int i =100; public void testMethod(int i){ System.out.println(i); System.out.println(this.i); System.out.println(super.i); } }
怎么用可能不好解释!有的时候 不用this 或 super 就无法表达你的意思了!这时候就理解了!比如 父类 和 子类有相同的变量名字 有时就需要用this 或super了,否则可能取不到你想要的变量!
你也在看java完全自学手册吗 一起看吧 然后多练习
class Plmm { public String name; public Plmm(String n){ this.name = n; } public String getName(){ this.name; }} 就从这个简单的class Plmm说起,写好了一个类,不过现在它就是一个以.java结尾的文件当需要一个Plmm的时候你会去 Plmm mm1 = new Plmm("小芳");【在内存中做了个Plmm为模板的对象mm1,这个Plmm的名字叫“小芳”】 当你mm1.getName()的时候返回“小芳” 所以此时的this表示的是 名字叫“小芳”的Plmm对象 也就是当前对象而Plmm mm2 = new Plmm("小蝶");这时的this表示名字叫“小蝶”的Plmm对象 this是个抽象的描述,实例化到具体的对象的时候才有具体的含义
this关键字基本上是有成员变量跟构造方法的参数相同时使用如: class a{ private int b; public a(int b){ this.b=b; } } 不过,其他的方法也是可以使用this,它的作用主要用来区别成员变量跟它“同名”局部变量; 至于super通常类是在无参数的构造方法里面自动调用的,也可以自己重写,它是调用父类的构造方法, 你传几个参数到super里面,它会找相应的参数个数相同的父类构造方法。
父类成员,可以通过super来引用
但是,如果与变量冲突的时候,用this可以解决这个问题,如
void f(String str){
//如果类成员也有一个str
//那它就需要用this.str,不然就是引用参数的str
}
这一般用于重载父类方法时会用到
如果父类中有一个方法f1,子类要重载它,但是,又需要用到父类原先的功能,
于是,就可以写
void f1(){
super.f1()
//其它逻辑
}
public class Test {
public static void main(String[] args) {
A a = new B();
a.testMethod(100000);
}
}
class A{
public int i = 10;
public void testMethod(int i){
System.out.println(i);
System.out.println(this.i);
}
}
class B extends A{
public int i =100;
public void testMethod(int i){
System.out.println(i);
System.out.println(this.i);
System.out.println(super.i);
}
}
{
public String name; public Plmm(String n){
this.name = n;
} public String getName(){
this.name;
}}
就从这个简单的class Plmm说起,写好了一个类,不过现在它就是一个以.java结尾的文件当需要一个Plmm的时候你会去 Plmm mm1 = new Plmm("小芳");【在内存中做了个Plmm为模板的对象mm1,这个Plmm的名字叫“小芳”】
当你mm1.getName()的时候返回“小芳”
所以此时的this表示的是 名字叫“小芳”的Plmm对象 也就是当前对象而Plmm mm2 = new Plmm("小蝶");这时的this表示名字叫“小蝶”的Plmm对象
this是个抽象的描述,实例化到具体的对象的时候才有具体的含义
class a{
private int b;
public a(int b){
this.b=b;
}
}
不过,其他的方法也是可以使用this,它的作用主要用来区别成员变量跟它“同名”局部变量;
至于super通常类是在无参数的构造方法里面自动调用的,也可以自己重写,它是调用父类的构造方法,
你传几个参数到super里面,它会找相应的参数个数相同的父类构造方法。
super就是调用父类别。