super 和 this 都可以在成员方法中用来访问:成员变量和调用其他成员方法,都可以作为构造方法的第一条语句。
- 【相同点】:
- 都是Java的关键字
- 只能在类的非静态方法中使用,用来访问非静态成员方法和变量
- 在构造方法中调用时,必须是构造方法中的第一条语句,且两者不能同时存在
- 【不同点】
- this 是当前对象的引用,当前对象 为调用实例方法的对象,super相当于是子类对象中从父类继承下来部分成员的引用
- 在构造方法中:this(…) 用来调用本类构造方法,super(…)用来调用父类构造方法,两者不能同时在构造方法中出现
- 在非静态成员方法中,this 用来访问本类的方法和属性,super 用来访问父类继承下来的方法和属性
- 构造方法中一定会存在 super(…) 的调用,用户没有写编译器也会增加!但是this(…) 不写则没有。