2013-02-26 44 views
0

所以我想我對我的問題太含糊。我將下面的ArrayIntList類末尾的runningTotal方法放在一起,我要求將其重寫爲runningTotal(ArrayIntList)和static runningTotal(ArrayIntList),並實現所有三個重載。也許我太困惑自己了,但我不知道該從哪裏出發......我希望這有點更清楚,謝謝你們所有的幫助傢伙!如何超載的方法

import java.io.*; 


public class ArrayIntList { 

private int[] elementData; 
private int size; 


public ArrayIntList(){ 
    elementData = new int[100]; 
    size = 0; 
} 

public void add(int value){ 

    elementData[size] = value; 
    size++; 

} 

public void print(){ 

    if (size == 0){ 

     System.out.println("[]"); 

    } 

    else { 

     System.out.print("[" + elementData[0]); 
     for (int i = 1; i < size; i++) 
      System.out.print(", " + elementData[i]); 
     System.out.println("]"); 

    } 

} 

public ArrayIntList runningTotal() { 

    ArrayIntList newList = new ArrayIntList(); 
    int i = 0; 
    int total = 0; 
    while (i < size) { 

     total = elementData[i]; 
     for(int j = 0; j < i; j++); 
     newList.add(total); 
     i++; 

    } 

    return newList; 

} 
} 
+0

什麼你,使它們在同一時間工作的意思? – ankurtr 2013-02-26 03:47:29

回答

5

你問的問題沒有意義。我只計算一個runningTotal,並且只有一個被調用。你還沒有寫其他的。重載函數只是具有相同名稱的函數,通常具有相似的功能,但設置不同。所以:

void runningTotal(int valueIn) 
{/*one thing*/} 

void runningTotal(int[] arrayIn) 
{/*another thing*/} 

int runningTotal() 
{return yetAnotherThing;} 

...都是同名的函數,但都是完全不同的函數。這種方式的強大之處在於方便性,允許您將值傳遞給函數,而不必考慮實際傳遞的類型。

所有你需要做的只是再次定義函數。如果存在功能重疊,您甚至可以從正在編寫的重載中調用其他重載之一。

計算機正在查看大部分時間的參數。函數(int,int)與函數(string,int)或函數()不同。這個推論是它不關心參數名稱。例如,函數(int a,int b)與函數(int c,int d)完全相同。

如果你想在同一時間點的字面運行這些功能您應該調查Java Threads and Concurrency