method overloading
来源:互联网 发布:家庭网络如何共享 编辑:程序博客网 时间:2024/05/28 16:05
任何程序设计语言都具备的一项重要特性就是对名字的运用。当你创建一个对象时,也就给
此对象分配到的存储空间取了一个名字。所谓方法则是给某个动作取的名字。使用名字来描
述系统,可使程序更易于理解和修改。就好比书写散文——目的是让读者易于理解。
以返回值区分重载方法
你可能会这么想:“在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准
呢?能否考虑用方法的返回值来区分呢?”比如下面两个方法,虽然它们有同样的名字和形
式参数,但你却可以很容易地区分它们:
void f() {}
int f() {}
在类似 int x=f( )的语境中,如果编译器可根据上下文明确判断出语义,那么的确可以据此区
分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(常被
称为“为了副作用而调用”)。你可能会调用方法而忽略其返回值:
f();
此时 Java 如何才能判断该调用哪一个 f( )呢?别人该如何理解这种代码呢?因此,根据方法
的返回值来区分重载方法是行不通的。
缺省构造器
如前所述,缺省构造器(又名“无参”构造器)是没有形式参数的。它的作用是创建一个“基
本对象”。如果你写的类中没有构造器,则编译器会自动帮你创建一个缺省构造器。例如:
//: c04:DefaultConstructor.java
class Bird {
int i;
}
public class DefaultConstructor {
public static void main(String[] args) {
Bird nc = new Bird(); // Default!
}
} ///:~
其中下面这一行:
new Bird();
创建了一个新对象,并调用其缺省构造器——即使你没有明确定义它。没有它的话,就无法
创建对象。但是,如果你已经定义了一个构造器(无论是否有参数),编译器就不会帮你自
动创建缺省构造器:
class Hat {
Hat(int i) {}
Hat(double d) {}
}
现在,要是你这么写:
new Hat();
编译器就会报错:没有找到匹配的构造器。这就好比,要是你没有提供任何构造器,编译器
会认为:“你需要一个构造器,让我给你制造一个吧”,但假如你已写了一个构造器,编译器
则会认为:“啊,你已写了一个构造器,所以你知道你在做什么;你是刻意省略了缺省构造
器。”
- method overloading
- 17.5.9 Method overloading
- 17.5.9 Method overloading
- 方法重载(method overloading)
- Java Ambiguous overloading method
- Java Method Overloading
- Day14-45.Method overloading
- Method of Overriding and Overloading
- Java - Method Overloading vs Method Overriding
- overloading
- 关于java中方法的重载(method overloading)--说明
- Java中的方法重载(method overloading)和方法重写(method Overriding)的区别
- overloading & overriding
- Operator Overloading
- overriding && overloading
- Function Overloading
- Operator overloading
- Function overloading
- SquashFS Howto
- java中file与io概述
- Oracle中自动获取序列sequence用法
- pivotGridControl 获取行头
- 杭电1068 Girls and Boys
- method overloading
- java comm v3 的安装 ubuntu
- mongodb在nodejs上基本应用
- HDOJ2888-裸二维RMQ
- 20120813 i2000上面一个表空间满了,被索引占了
- Change Log 前世今生
- div+css 列表
- iOS5 ARC学习笔记
- 什么JSON