java方法重载2

原创 2006年05月25日 10:11:00

在本例中,Box() 构造函数需要三个自变量,这意味着定义的所有Box对象必须给Box() 构造函数传递三个参数。
例如,下面的语句在当前情况下是无效的:
Box ob = new Box();
因为Box( )要求有三个参数,因此如果不带参数的调用它则是一个错误。
这会引起一些重要的问题。如果你只想要一个盒子而不在乎 (或知道)它的原始的尺寸该怎么办?
或,如果你想用仅仅一个值来初始化一个立方体,而该值可以被用作它的所有的三个尺寸又该怎么办?
如果Box 类是像现在这样写的,与此类似的其他问题你都没有办法解决,因为你只能带三个参数而没有别的选择权。 幸好,解决这些问题的方案是相当容易的:重载Box 构造函数,使它能处理刚才描述的情况。
下面程序是Box 的一个改进版本,它就是运用对Box构造函数的重载来解决这些问题的:
/* Here,Box defines three constructors to initialize the dimensions of a box various ways. */
class Box {
    double width;
    double height;
    double depth;
    // constructor used when all dimensions specified
    Box(double w,double h,double d) {
        width = w; height = h; depth = d;
    }
    // constructor used when no dimensions specified
    Box() {
        width = -1; // use -1 to indicate
        height = -1; // an uninitialized
        depth = -1; //
        box
    }
    // constructor used when cube is created
   Box(double len) {
        width = height = depth = len;
   }/
   / /compute and return volume
   double volume() { 
     return width * height * depth;
   }
}
class OverloadCons {
      public static void main(String args[]) {
      // create boxes using the various constructors
      Box mybox1 = new Box(10,20,15);
      Box mybox2 = new Box();
      Box mycube = new Box(7);
      double vol;
      // get volume of first box 
      vol = mybox1.volume();
     System.out.println("Volume of mybox1 is " + vol);
      // get volume of second box
      vol = mybox2.volume();
     System.out.println("Volume of mybox2 is " + vol);
      // get volume of cube
      vol = mycube.volume();
     System.out.println("Volume of mycube is " + vol);
     }
 }
该程序产生的输出如下所示:
Volume of mybox1 is 3000.0 Volume of mybox2 is -1.0 Volume of mycube is 343.0 在本例中,当new执行时,根据指定的自变量调用适当的构造函数。

3. Java 2 SE 方法重载 & 继承

1.如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是 public ,可以没有public。ji...
  • dodohui
  • dodohui
  • 2014年04月22日 10:50
  • 398

1-2 java基础:方法、方法重载、数组

Java基础:方法、方法重载、数组等

Java方法重载

  • 2012年02月11日 21:00
  • 19KB
  • 下载

VC6重载BeforeNavigate2和DocumentComplete函数方法 .

众所周知BeforeNavigate2和DocumentComplete函数是IE未公开的接口,如果你做基于IE的二次开发的话,而且很不幸因为种种原因只能用VC6的话,那么本文将帮助你,告诉你如何正确...
  • newlist
  • newlist
  • 2012年07月23日 11:53
  • 1821

java方法重载

  • 2013年04月01日 13:54
  • 11KB
  • 下载

Java 中方法的重载与覆盖

  • 2011年04月01日 16:05
  • 3KB
  • 下载

C++第5周任务【任务2】本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: ...

java方法的重载

  • 2016年01月01日 22:34
  • 2KB
  • 下载

JAVA中的方法重写与方法重载区别

  • 2011年07月13日 17:32
  • 141KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java方法重载2
举报原因:
原因补充:

(最多只允许输入30个字)