台灣最大程式設計社群網站
線上人數
1329
 
會員總數:246315
討論主題:189842
歡迎您免費加入會員
討論區列表 >> Java >> 物件引數的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
物件引數的問題
價值 : 50 QP  點閱數:1097 回應數:3
樓主

陳小源
門外漢
0 6
205 13
發送站內信

public static void main(String args[])
{
CVector2 i = new CVector2();
i.set(20,40);
CVector2 j = new CVector2();
j.set(15,45);
CVector2 k; //k是CVector2物件變數,在第18行用來接收回傳值
CMyClass X = new CMyClass();
k=X.sum(i,j);
System.out.println("Vector i=(" + i.x + "," + i.y + ")");
System.out.println("Vector j=(" + j.x + "," + j.y + ")");
System.out.println("Vector k=i+j=(" + k.x + "," + k.y + ")");
}
}

class CMyClass
{
public int sum(int a,int b)
{
return a+b;
}
public double sum(double a,double b)
{
return a+b;
}

public CVector2 sum(CVector2 a,CVector2 b) //二維向量的加法成員函式
{
CVector2 tempVector = new CVector2();
tempVector.x=a.x+b.x;
tempVector.y=a.y+b.y;
return tempVector;
}
}

class CVector2 //二維向量類別
{
public int x,y; //二維向量的兩項元素資料
public void set(int m,int n) //用於設定二維向量的兩項元素資料
{
x=m;
y=n;
}


各位大大麻煩了!!
我看不懂 k=X.sum(i,j);
這裡的i和j分別是代多少,跟它是要代入以下那一個
public int sum(int a,int b)
{
return a+b;
}

public double sum(double a,double b)
{
return a+b;
}

public CVector2 sum(CVector2 a,CVector2 b) //二維向量的加法成員函式
{
CVector2 tempVector = new CVector2();
tempVector.x=a.x+b.x;
tempVector.y=a.y+b.y;
return tempVector;
}
然後以下這段程式碼幾乎是看不懂的,如為什麼程式碼public後面是CVector2呢,為什麼產生一個tempVector
public CVector2 sum(CVector2 a,CVector2 b) //二維向量的加法成員函式
{
CVector2 tempVector = new CVector2();
tempVector.x=a.x+b.x;
tempVector.y=a.y+b.y;
return tempVector;
}



















}

搜尋相關Tags的文章: [ 物件 ] ,
本篇文章發表於2012-04-08 16:09
== 簽名檔 ==
[b]  這樣也可以= =
1樓
回應

香帥
檢舉此回應
然後以下這段程式碼幾乎是看不懂的,如為什麼程式碼public後面是CVector2呢,為什麼產生一個tempVector
ans:
因為sum它要傳回一個 CVector2
所以sum前面多一個 CVector2

我看不懂 k=X.sum(i,j);
這裡的i和j分別是代多少,跟它是要代入以下那一個
因為i,j都是 CVector2 因此會代入以下這個
public CVector2 sum(CVector2 a,CVector2 b)



本篇文章回覆於2012-04-09 01:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Pan01
檢舉此回應
sum(CVector2 a,CVector2 b) 是要達成 加總 兩個 CVector2 物件的值 , 當然 回傳的 必須是 CVector2 物件.

就如同 加總 兩個 int 會 回傳 int. 加總 兩個 double 會 回傳 double.

這是一個 偷懶(簡略)的寫法:


這是一個 偷懶(簡略)的寫法:
本篇文章回覆於2012-04-09 04:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

Pan01
檢舉此回應
sum(CVector2 a,CVector2 b) 是要達成 加總 兩個 CVector2 物件的值 , 當然 回傳的 必須是 CVector2 物件.

就如同 加總 兩個 int 會 回傳 int. 加總 兩個 double 會 回傳 double.

這是一個 偷懶(簡略)的寫法:


這是一個完整的寫法:


對照 sum(CVector2 a,CVector2 b)
public CVector2 sum(CVector2 a,CVector2 b) //二維向量的加法成員函式
{
CVector2 tempVector = new CVector2(); ==> 宣告一個 新的 變數

tempVector.x=a.x+b.x; ==> 執行 x 加總運算
tempVector.y=a.y+b.y; ==> 執行 y 加總運算

return tempVector; ==> 回傳 結果
}


各位大大麻煩了!!
我看不懂 k=X.sum(i,j);
這裡的i和j分別是代多少,跟它是要代入以下那一個

public int sum(int a,int b)
public double sum(double a,double b)
public CVector2 sum(CVector2 a,CVector2 b)

這三個 sum 的 函式 , 是 使用 函式多形 的 技巧.

程式 不是 光看 就會懂得 , 是要 透過 寫它 , 執行它 , 測試它 來了解 其特性的.
上面 三個 函式 , 你可以 分別加上
System.out.println("Execute public int sum(int a,int b)");
System.out.println("Execute public double sum(double a,double b)");
System.out.println("Execute public CVector2 sum(CVector2 a,CVector2 b)");

只要 去執行後 , 你就可以知道 k=X.sum(i,j); 是代入哪一個.
本篇文章回覆於2012-04-09 05:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.