网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.派生线程类.
.使用 Struts portlet 实现页面导.
.StarSuite 6.0 & sdk 安装及配置.
.Windows平台的Ruby IDE点评.
.按屏幕比例重新设定窗口的大小.
.J2EE中使用EntityBean和JDO的优缺.
.JAVA中通过JDBC访问MS SQL Serve.
.Java框架:Struts 的动态复选框.
.Java模式学习一、简单工厂.
.2005年度Java十大新技术和新产品.
.多形对象的互换使用.
.读取数码照片中的Exif信息.
.功能完善的Java连接池调用实例.
.用 Java 保存位图文件(转).
.用Java实现HTTP断点续传.
.JAVA生成JPG缩略图.
.初探.NET中的delegate类型与.NET.
.int、char、double与byte相互转换.
.toTimeString 方法.
.教你学会XML Web Service 的安全.

Java方法过载

发表日期:2008-1-5



  在任何程序设计语言中,一项重要的特性就是名字的运用。我们创建一个对象时,会分配到一个保存区域的名字。方法名代表的是一种具体的行动。通过用名字描述自己的系统,可使自己的程序更易人们理解和修改。它非常象写散文——目的是与读者沟通。
  我们用名字引用或描述所有对象与方法。若名字选得好,可使自己及其他人更易理解自己的代码。
  将人类语言中存在细致差别的概念“映射”到一种程序设计语言中时,会出现一些非凡的问题。在日常生活中,我们用相同的词表达多种不同的含义——即词的“过载”。我们说“洗衬衫”、“洗车”以及“洗狗”。但若强制象下面这样说,就显得很愚蠢:“衬衫洗 衬衫”、“车洗 车”以及“狗洗 狗”。这是由于听众根本不需要对执行的行动作任何明确的区分。人类的大多数语言都具有很强的“冗余”性,所以即使漏掉了几个词,仍然可以推断出含义。我们不需要独一无二的标识符——可从具体的语境中推论出含义。
  大多数程序设计语言(非凡是C)要求我们为每个函数都设定一个独一无二的标识符。所以绝对不能用一个名为print()的函数来显示整数,再用另一个print()显示浮点数——每个函数都要求具备唯一的名字。
  在Java里,另一项因素强迫方法名出现过载情况:构建器。由于构建器的名字由类名决定,所以只能有一个构建器名称。但假若我们想用多种方式创建一个对象呢?例如,假设我们想创建一个类,令其用标准方式进行初始化,另外从文件里读取信息来初始化。此时,我们需要两个构建器,一个没有自变量(默认构建器),另一个将字串作为自变量——用于初始化对象的那个文件的名字。由于都是构建器,所以它们必须有相同的名字,亦即类名。所以为了让相同的方法名伴随不同的自变量类型使用,“方法过载”是非常要害的一项措施。同时,尽管方法过载是构建器必需的,但它亦可应用于其他任何方法,且用法非常方便。
  在下面这个例子里,我们向大家同时展示了过载构建器和过载的原始方法:
  
  //: Overloading.java
  // Demonstration of both constrUCtor
  // and ordinary method overloading.
  import java.util.*;
  
  class Tree {
   int height;
   Tree() {
    prt("Planting a seedling");
    height = 0;
   }
   Tree(int i) {
    prt("Creating new Tree that is "
      + i + " feet tall");
    height = i;
   }
   void info() {
    prt("Tree is " + height
      + " feet tall");
   }
   void info(String s) {
    prt(s + ": Tree is "
      + height + " feet tall");
   }
   static void prt(String s) {
    System.out.println(s);
   }
  }
  
  public class Overloading {
   public static void main(String[] args) {
    for(int i = 0; i < 5; i++) {
     Tree t = new Tree(i);
     t.info();
     t.info("overloaded method");
    }
    // Overloaded constructor:
    new Tree();
   }
  } ///:~
  
  Tree既可创建成一颗种子,不含任何自变量;亦可创建成生长在苗圃中的植物。为支持这种创建,共使用了两个构建器,一个没有自变量(我们把没有自变量的构建器称作“默认构建器”,注释①),另一个采用现成的高度。
  
  ①:在Sun公司出版的一些Java资料中,用简陋但很说明问题的词语称呼这类构建器——“无参数构建器”(no-arg constructors)。但“默认构建器”这个称呼已使用了许多年,所以我选择了它。
  
  我们也有可能希望通过多种途径调用info()方法。例如,假设我们有一条额外的消息想显示出来,就使用String自变量;而假设没有其他话可说,就不使用。由于为显然相同的概念赋予了两个独立的名字,所以看起来可能有些古怪。幸运的是,方法过载答应我们为两者使用相同的名字。
上一篇:Java二进制兼容规则:方法 人气:602
下一篇:Java集合的缺点:类型未知 人气:641
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐