2014-02-26 142 views
-2

如何創建返回類型爲返回類型的方法?這是一種找到兩個數字總和的方法。數字對象在另一個類中創建,並且必須將其添加到「其他」參數中。我不確定我是否正確創建了該方法。如果類型是班級,你將如何創造適當的回報?方法中的返回值?

public class Number { 
    private double a; 
    private double b; 

    public Number (double _a, double _b) { 
      a = _a; 
      b = _b; 
    } 

    public Number sum(Number other) { 
      a = this.a + other.b; 
      b = this.b + other.b; 
      return ; 
    } 
} 
+4

我強烈建議改變'_a'和'_b'的名字。你可以使用'a'和'b'並寫'this.a = a;'。 – Maroun

+1

雖然這個問題非常基本,如果他閱讀了一個基本教程,OP可以找到答案,但爲了清晰和寫得很好,問題得到了解答+1。 – Maroun

回答

4

你如何創建具有返回類型爲類方法的返回?

與處理任何其他引用的方式相同。

在你的情況,你可以只是改變你的代碼:

return this; 

然而,這加入給定的數字到現有的,突變所調用的方法的對象...有點像StringBuilder.append

我懷疑這將是最好不要改變任何數字,而是創建一個新:

public Number sum(Number other) { 
    return new Number(this.a + other.a, this.b + other.b); 
} 

(目前你沒有使用other.a所有,但我認爲是一個錯字。)

除了其他任何東西,你可以使你的類型不可變的,這通常使事情更容易推理。要做到這一點,請將字段final設爲final。我個人也會將方法名稱更改爲plus,但這是個人偏好的問題。

0

在Java中,您只能返回類型的對象。

public Number sum(Number other,Number nobj) { 
     a = nobj.a + other.b; 
     b = nobj.b + other.b; 
     return nobj; 
} 
0

如果您關注的是返回傳遞給總和方法(包括子類)相同的類型,你可以檢查參數和返回類型之一。

喜歡的東西...

public class Number { 
    private double a; 
    private double b; 

    private Number() {} 
    public Number (double _a, double _b) { 
      a = _a; 
      b = _b; 
    } 

    public Number sum(Number other) throws Exception { 
      a = this.a + other.b; 
      b = this.b + other.b; 
      Number n = other.getClass().newInstance(); 
      n.a = a; 
      n.b = b; 
      return n; 
    } 
} 

注意我不得不添加一個無參數的構造了。