this 和 super 的区别
相同:
-
1、this和super都是与实例有关的
- 使用this和super可以访问实例成员和类成员(虽然通过this和super可以访问类成员,但不建议使用)
- 因此this和super都不能出现在static方法中和static代码块中(类初始化器)
-
2、this和super都可以用于调用构造方法
- 当通过this或super调用构造方法时,它们必须位于构造方法的第一行
- 同一个构造方法内部this或super不能同时出现
区别:
-
1、所表示的实例不同
- this代表本类的当前实例,即可以通过this访问本类中的成员(this可以单独使用)
- super用于访问从父类继承的、可见的成员,所以super不能表示父类实例,不能单独使用
-
2、调用的构造不同
- this用于调用本类内部的其它重载的构造方法
- super用于调用父类的构造方法
-
3、访问的成员不同
- 通过this. 可以访问本类中以及父类中继承的、可见的成员(方法 和属性(字段))
- 通过super.可以访问从父类中继承的、可见的成员( 方法、字段(属性) )
-
4、使用方式不同
- this关键字可以单独使用,比如直接输出this或当作返回值
- this关键字在本类中可以省略
- super关键字不可以单独使用,必须通过super(参数)或super.形式使用