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

Posted 矮子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 的用法总结

 

以上是关于java中的this关键词和super关键词用法的主要内容,如果未能解决你的问题,请参考以下文章

4月22日java之(super关键字的用法)(this关键字用方法)

Java基础之this和super关键字用法

java 关于继承中的super() 方法

Java基础之this和super关键字用法

如何理解 JavaScript 中的 this 关键字

JAVA关键字具体的作用和用法