java中的this关键词和super关键词用法

this关键字

    指正调用此方法的对象(当前对象),在方法内部使用,也可以作为方法的参数进行参数转递

    格式:

this.成员变量名
this.成员方法名(参数)
this.(参数)

  

super关键字

    子类中声明的成员变量与父类中声明的成员变量相同,子类是不能继承父类的成员变量,这是需要在子类中访问分类中被子类隐藏的成员变量需要使用super关键字

      我个人的理解super关键字使得子类可以访问父类成员方法或变量的关键字(如有不对请指出,谢谢) 

    格式:

super.成员变量名
super.成员方法名称([参数列表])

  

 

 

 

super 和 this的异同

  • super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
  • this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
  • super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参) this:它代表当前对象名(在程序中易产生二义性之处,应使用 this 来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用 this 来指明成员变量名)
  • 调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用 super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
  • super() 和 this() 类似,区别是,super() 从子类中调用父类的构造方法,this() 在同一类内调用其它方法。
  • super() 和 this() 均需放在构造方法内第一行。
  • 尽管可以用this调用一个构造器,但却不能调用两个。
  • this 和 super 不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有 super 语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
  • this() 和 super() 都指的是对象,所以,均不可以在 static 环境中使用。包括:static 变量,static 方法,static 语句块。
  • 从本质上讲,this 是一个指向本对象的指针, 然而 super 是一个 Java 关键字。

 

参考文档:

      菜鸟教程 | Java 中 this 和 super 的用法总结

 

posted @ 2020-06-07 09:16  beitso-admin  阅读(358)  评论(0编辑  收藏  举报