再谈重载
方法的重载
当创建一个对象时,也就给此对象分配到尺寸空间取了一个名字。所谓方法,则是给某个动作取得名字。通过使用名字,则可以引用所有的对象和方法。名字取的好可以使系统更加易于理解和修改。
在日常生活中,相同的词可以表达多种不同的含义——他们被“重载”了。特别是含义之间的差距很小的时候,这种方式十分有用。
在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();
}
}
有了方法重载,可以为两者使用相同的名字