在Java中调用超级构造函数的方法,是不是?

时间:2013-09-05 13:52:56

标签: java class methods super

如果我有一个带有两个参数的构造函数,我可以像这样调用super吗?

super(a,b).method

例如:

public class Money (){
     int euro=0;
     int count=0;  

     public Money(int a,int b) {
        a=euro;   
        b=count;
     }

     public int getPay(){
       return 100;
     }
}

public class  Pay extends Money{
   super(a,b).getPay();

}

这可能吗?

3 个答案:

答案 0 :(得分:3)

这是不可能的,也没有任何意义。如果getPay()是父类'方法,它将可供孩子使用,并且可以像getPay()super.getPay()一样调用,以防孩子覆盖该方法。

答案 1 :(得分:1)

不,但你可以打电话

public class  Pay extends Money{

   public Pay(int a,int b){
     super(a,b);
    }

}

以后再做

new Pay(1,4).getPay();

答案 2 :(得分:1)

不完全。然而,您似乎正在尝试做两件事:

  • 使用超级构造函数(Money)定义Pay构造函数
  • 当你调用这个版本的`getPay()`时,调用`getPay()`的超级(Money)版本。

如果是这样,那么你想要做的是:

public class Money (){
     int euro=0;
     int count=0;  

     public Money(int a,int b) {
        a=euro;   
        b=count;
     }

     public int getPay(){
       return 100;
     }
}

public class  Pay extends Money{
   public Pay(int a, int b) {
       super(a, b);
   }

   public int getPay() {
       //This is redundant, see note below
       return super.getPay();
   }

}

注意:getPay()此时调用super.getPay()完全是多余的(因为你要覆盖super.getPay(),如果你没有,你无论如何都可以访问它)。但您现在可以做的是修改方法(例如,return super.getPay() + someVariable;)。