java基础
**
this和super关键字
**
在java里,这个this和super我们学习过程中很容易把这俩忽略掉!!!

此篇博客将对this和super关键字进行剖析。将this和super放在同一块是因为这两需要进行对比分析!!!

this:
位置:构造器内、方法内
作用:像它的意思。表示当前对象,可以用来调用属性、方法和构造器。
来段我们熟悉的pojo类
class A{
private int id;
protected String name;
public String sex;
public A(int id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
this.talk();
}
public A(){
}
void talk(){
System.out.println(id+name+sex);
}
}
这个类,我们随便双击一个this.后面的那个看一看

我们发现,这个this.name就是上面String 那么中的name 也是我们talk()里的name
我给talk加了一个this.但都一样
所以这里的this就是当前对象的意思。
注意:
1、我们方法里一般没写this.是因为这个可以省略,但在方法里直接写的name和this.name是一样的
2、this() this.name this.talk()
这三者的区别一目了然。一个是当前构造方法,一个是当前类的字段,一个是当前类的方法
3、其他不急,先看super
super:
位置:构造器内、方法内
作用:同this,不过表示的是父类的对象
对比this和super
1、this()和super()在位于构造方法内有效代码第一行
由此可知,一个构造器只能有一个this()或super(),且this和super不能共在
public class B extends A{
public B(){
super();
}
public B(){
this();
}
// public B(){
// super();
// this(); 错误
// }
// public B(){
// this();
// this(); 错误
// }
}
2、成员方法不能调用构造函数
3、构造方法不能互相调用
最后,我们要知道的是
1.我们在类里方法内直接写属性一般是省略this.的
2.对于我们父子类同名属性时,使用super.和this.可以将属性区分开,默认则是this。
3.用super调用父类方法,用this调用本类方法,默认this
4.使用super和this不牵扯任何实例化过程,也不加杂对象操作。因为this就代表的是当前对象,super没这个概念。
其实,this和super这里我们一般确实关注不多,我们对它代表什么意义和怎么用了解就行,重要的则是后面的一些东西。

返回 》
接口抽象类
下一篇
》
面向对象——多态