class A
{
 void f(){}
 void g()
{}
}class AA extends A{
 void d()
{
super();
  
}}class BB 
{
public static void main(String args[])
{
 System.out.println("AAAAAAAAA");
AA a=new AA();
a.d();
}}我怎么知道他super调用哪个方法????

解决方案 »

  1.   

    super,就是指父类的方法,在构造函数中调用super(),就是调用父类的构造的方法,然后还一个使用super.方法调用被子类覆盖的方法。没有被覆盖,可以省略super 直接使用,
    class A
    {
     A(){
    System.out.println("父类的构造方法")
    }
     void g()
    {}
    }class AA extends A{
     void d()
    {
    super();
      
    }}class BB 
    {
    public static void main(String args[])
    {
     System.out.println("AAAAAAAAA");
    AA a=new AA();
    a.d();
    }}
      

  2.   

    super();
    这种调用的是AA类的父类A的构造方法,既不是f也不是g,而是类A的默认构造方法
      

  3.   

    super()
    默认调用父类的无参数构造方法
    也就是
    A(){
    }
    虽然你class A里没写 这个方法 但是默认每个类都有
      

  4.   

    你上面的代码是编译不通过的啊~~~super();代表子类调用父类的构造器。如果像你这种显示调用的话,应该出现在子类构造器的第一行;
    如果你不显示调用,系统会默认调用父类的构造器一次。(所以你写在普通方法里是不对滴哦~~)如果你想调用父类中的方法,可以用super.f();或super.g();这样的写法