this / super

this

理解:this是指自身的一个对象,代表对象本身。

作用
通过了解this关键字的含义我们能用来干嘛

  • 用来区分重名的形参和成员变量
public class Test {

    private String name= "成员变量";//成员变量

    public void showAge(String name) {//name 形参
        this.name=name;
        String sex="男";//局部变量
        System.out.println(this.name+"/"+sex);
    }

    public static void main(String[] args){

        new Test().showAge("小了白了兔");//name 实参
    }
}
  • 调用本类中的某一个构造函数
Point(int a,int b){
    x=a;
    y=b;
}
Point(){
    this(1,1); //调用point(1,1),必须是第一条语句。
}
super

理解:指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

作用

  • 调用基类中的某一个构造函数
class Person {
    public static void prt(String s) {
       System.out.println(s);
    }
 
    Person() {
       prt("A Person.");
    }
 
    Person(String name) {
       prt("A person name is:" + name);
    }
}
 
public class Chinese extends Person {
    Chinese() {
       super();// 调用父类构造函数。
       prt("A chinese.");
    }
 
    Chinese(String name) {
       super(name);// 调用父类具有相同形参的构造函数。
       prt("his name is:" + name);
    }
 
    public static void main(String[] args) {
       Chinese cn = new Chinese();
       cn = new Chinese("kevin");
    }
}

输出结果:
A Person.
A chinese.
A person name is:kevin
his name is:kevin

区别:super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。

注意:

  • super()和this()均需放在构造方法内第一行。
  • this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
  • this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
    -从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 忽然觉得自己有种升华的感觉。因为我发现我可以做到面对一件事情有自己的意见和看法,但却不升起情绪,而是真正接纳;也能...
    素朴之心阅读 195评论 0 0
  • 棒球比赛中,一位击球员从拿起球棒到三振出局。 观察: 她眼睛里的、身体上的逐级变化——人物在发展。 每个发展的节拍...
    中岿阅读 144评论 0 0