在Java中使用this引用当前对象,使用super引用父类的对象。
this代表对象本身,指向自己的引用,可以使用this来调用属性,调用方法,利用this表示当前对象。
可以把this理解为指向对象本身的一个指针。
this的用法分为3种:
- 直接引用:用this访问当前对象的成员
- 形参与成员名字同名时,用this区分
)
运行结果:this.sum = 8,this.name = 男生,形参sum = 10,形参name = 女生 - 引用构造函数
运行结果:8个男生
super可以理解为指向自己超类对象的一个指针,超类就是当前类的直接父类。
super的用法分为3种: - 直接引用:用super访问父类对象的成员
运行结果:this.sum = 8 this.name = 男生 ,super.sum = 8 super.name = 男生 - 父类与子类存在同名的成员时,用super调用父类的成员
运行结果:
- 引用构造函数
运行结果:10个女生
上面的几种用法中,this和super的前两种用法比较简单,就第三种用法有一些需要注意的地方。根据需要我做了以下几个总结:[ ]代表可写可不写
this:指向自己的引用,代表当前对象名(当构造器或方法的形参和成员数据同名时,可以通过this来指向成员变量名)。
super:可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类(当父类与子类有同名的方法时,可以通过super来指向父类的方法)。
this([形参列表]):调用本类中的另一个构造函数(应为构造函数中的第一条语句)。
super([形参列表]):调用父类的某一个构造函数(应为构造函数中的第一条语句)。
this()和super()不能出现在同一个构造器中,且同一个构造器只能有一条调用其他构造器的语句,这条语句必须放在构造器的第一行。
this和super都指的是对象,所以,均不能再static环境下使用。
从本质上讲,this是一个指向对象本身的指针,而super是Java关键字。