方法的重載
當創建一個對象時,也就給此對象分配到尺寸空間取了一個名字。所謂方法,則是給某個動作取得名字。通過使用名字,則可以引用所有的對象和方法。名字取的好可以使系統更加易於理解和修改。
在日常生活中,相同的詞可以表達多種不同的含義——他們被“重載”了。特別是含義之間的差距很小的時候,這種方式十分有用。
在java(和c++)裏,構造器是強制重載方法名的另一種原因。既然構造器的名字由類名所決定。那麼就只能有一個構造器名。
如果要想用多種方式創建一個對象。假設要創建一個類,既可以用標準方式進行初始化,也可以從文件裏讀取信息來初始化,這就需要兩個構造器:
- 1.一個默認構造器
- 2.另一個取字符串作爲形式參數—該字符串表示初始化對象所需要的文件名稱
由於都是構造器,所以他們必須有相同的名字,即類名。爲了讓方法名相同而形式參數不同的構造器同時存在,必須用到方法重載。同時,儘管方法重載是構造器所必需的,但它也可以應用於其他方法,且用法同樣方便。
重載的構造器和重載的方法示例
class Tree{
int height;
Tree(){
print("Planting a seedling");
height = 0;
}
Tree(int initialHeight){
height = initialHeight;
print("Creating new Tree that is "+height+"feet tail");
}
void info(){
print("Tree is "+height+"feet tail");
}
void info(String s){
print(s +":Tree is "height+"feet tail");
}
}
public class Overloading(){
public static void main(String[] agrs){
for(int i=0;i<5;i++){
Tree t = new Tree(i);
t.info();
t.info("overloaded method");
}
new Tree();
}
}
有了方法重載,可以爲兩者使用相同的名字