ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[success] # super -- 关键字 * **Java 中的 super 关键字**则是表示 **父类对象的引用**,**严格来说**,super其实并**不是一个引用**,它只是**一个关键字**,super代表了当前对象中从父类继承过来的那部分特征,看出this是可以单独使用的引用,但super无法输出,编译器提示super要使用必须是**super.xxx**,显然super并不指向独立的对象,并不是保存某个对象的内存地址 ~~~ public class SuperTest01 extends Object{ //实例方法 public void doSome(){ System.out.println(this); // 是可以打印的 System.out.println(super); // 报错 } } ~~~ * super可以使用在实例方法当中 * **super**不能使用在静态方法当中,因为super代表了当前对象上的父类型特征,静态方法中没有this,肯定也是不能使用super的。 ~~~ public class SuperTest02 extends Object{ //静态方法 public static void doSome(){ System.out.println(this); // 报错 System.out.println(super.toString()); // 报错 } } ~~~ * **super(实际参数列表)**,这种用法是通过当前的构造方法调用**父类的构造方法**,**this(实际参数列表)** 都是只允许出现在构造方法第一行,所以这两行代码是无法共存的,当一个类的构造方法第一行中没有**this()**,也没有**super()**,系统默认有**super()** 方法 * 在子类中调用父类方法使用**super.xxx**,父类和子类中有同名实例变量或者有同名的实例方法,想在子类中访问父类中的实例变量或实例方法,则super是不能省略的,其它情况都可以省略