2

如果我有一个带有两个参数的构造函数,我可以这样调用 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();

}

这可能吗?

4

3 回答 3

3

这是不可能的,也没有任何意义。如果getPay()是父类的方法,它将对子类可用,并且可以按原样getPay() 或类似方式调用super.getPay(),以防子类覆盖该方法。

于 2013-09-05T13:57:21.913 回答
1

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

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

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

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;)。

于 2013-09-05T14:19:30.177 回答
1

不,但你可以打电话

public class  Pay extends Money{

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

}

后来做

new Pay(1,4).getPay();
于 2013-09-05T13:54:45.340 回答