Java中的super()。这是什么意思?

时间:2013-07-11 14:02:35

标签: java super inheritance

我对此代码感到有点困惑:

class A{
    class B{
    }
}

class C extends A.B{
    C(A a){
        a.super();
    }
}

这是什么意思:" a.super();" ? 之前我认为超级链接到她的父类,但" super()" - 链接到父母的构造函数,但真正的A类避风港是一个父类(不要介意对象......),那么在这种情况下它是什么意思?

大家好。

2 个答案:

答案 0 :(得分:5)

super()调用超类的默认构造函数。如果没有定义构造函数,则类总是有一个不可见的默认构造函数,它不需要任何参数。在这种情况下,您正在调用Object类的构造函数。

答案 1 :(得分:3)

它是合格的超类构造函数调用。

来自JLS 1.8

  

显式构造函数调用语句可以分为两种:

     
      
  1. 备用构造函数调用以关键字this开头(可能以显式类型参数开头)。它们用于调用同一类的备用构造函数。

  2.   
  3. 超类构造函数调用以关键字super(可能以显式类型参数开头)或Primary表达式开头。它们用于调用直接超类的构造函数。超类构造函数调用可以进一步细分:

  4.   
  5. 不合格的超类构造函数调用以关键字super开头(可能以显式类型参数开头)。

  6.   
  7. 合格的超类构造函数调用以Primary表达式开头。它们允许子类构造函数显式指定新创建的对象关于直接超类(第8.1.3节)的直接封闭实例。当超类是内部类时,这可能是必要的。

  8.