如何重载方法

时间:2013-02-26 03:44:48

标签: java

所以我想我的问题太模糊了。我在runningTotal类的末尾放置了ArrayIntList方法,我被要求将其重写为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;
    }
}

1 个答案:

答案 0 :(得分:5)

你提出的问题并没有多大意义。我只计算一个runningTotal,只调用一个。你还没有写其他人。重载函数只是同名函数,通常具有相似的功能,但设置方式不同。所以:

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

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

int runningTotal()
{return yetAnotherThing;}

...都是同名的功能,但都是完全不同的功能。它的强大之处在于方便,允许您将值传递给函数而不需要注意实际传递的类型。

您只需要再次定义该功能即可。如果存在功能重叠,您甚至可以从正在编写的重载中调用其他重载之一。

计算机正在查看大多数时间的参数排序。 function(int,int)与function(string,int)或function()不同。这样做的必然结果是它不关心参数名称。例如,function(int a,int b)与function(int c,int d)完全相同。

如果你想在同一时间点字面上运行这些功能,你应该调查Java Threads and Concurrency