LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 688|回复: 3

类重载不懂的地方

[复制链接]
发表于 2005-5-24 03:26:56 | 显示全部楼层 |阅读模式
书上的例子来的,后边我看不懂!p


public class OverLoad
{
  int ix,iy;
  double dx,dy;
  OverLoad(int ix,int iy,double dx,double dy)
  {
    this.ix=ix;
    this.iy=iy;
    this.dx=dx;
    this.dy=dy;
  }
  int max(int b,int a)
  {
    if (a>b)
      return a;
    else
      return b;
  }
  double max(double a,double b)
  {
    if (a>b)
      return a;
    else
      return b;
  }
  public static void main(String args[]){
    OverLoad obj=new OverLoad(3,4,5.0,6.0);
    System.out.println("the max integer is "+obj.max(obj.ix,obj.iy));
    System.out.println("the max double is "+obj.max(obj.dx,obj.dy));
    System.out.println("The max is "+obj.max(obj.max(obj.ix,obj.iy),obj.max(obj.dx,obj.dy)));
  }
}



为什么在最后三个System.out.println里的内容我不理解?

obj.max(obj.ix,obj.iy);这个括号里是什么意思 ? 为什么输出的是后面obj.iy ?也就是4 ??

最后一句更没办法了解,,obj.max(obj.max(obj.ix,obj.iy),obj.max(obj.dx,obj.dy))是什么意思,目的是想输出什么 ? 我知道这个例子是将构造方法,可我怎么没见过这样的构造方法呢?

为什么输出最后的一个??? 是不是转换什么啊 ? 谁能解释一下啊 ,谢谢,
发表于 2005-5-24 10:57:58 | 显示全部楼层
OverLoad(int ix,int iy,double dx,double dy)
OverLoad obj=new OverLoad(3,4,5.0,6.0);
对应起来就是  obj.ix=3 obj.iy=4 obj.dx=5.0 obj.dy=6.0
------------------------------------------------------------
obj.max(obj.ix,obj.iy);这个括号里是什么意思 ? 为什么输出的是后面obj.iy ?也就是4 ??
--------------------------------
这个方法返回两个参数中的较大值。

最后一个分开看就行了:

obj.max(obj.max(obj.ix,obj.iy),obj.max(obj.dx,obj.dy))

相当于 int x = obj.max(obj.ix, obj.iy) 就是求ix iy中的较大值
          double y = obj.max(obj.dx, obj.dy) 就是求dx dy 中的较大值
          然后 求 x y 的较大值
就是比较大小啊。。。。。。。。。。。。由于方法写的只能比较两个数的大小,所以四个数比较大小就得这么麻烦地写啊。前面的字符串已经说明了的...............................
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-24 17:08:15 | 显示全部楼层
好,谢谢你

但像最后一句一样,是不是谁大就是谁的类型 ?

obj.max(obj.max(obj.ix,obj.iy),obj.max(obj.dx,obj.dy))

这个时候,4和6.0比,一个是int型,一个是double型,他们是怎么比较的 ?

不是java不支持强制类型的吗 ??



还有如何比较最小的呢 ?
回复 支持 反对

使用道具 举报

发表于 2005-5-25 14:47:07 | 显示全部楼层
可以这么理解,int  是long 的一个子集,long  是double的一个子集.

int max(int b,int a)
{
if (a>b)
return a;
else
return b;
}

稍微改一点就是比较最小啦............

int min(int b,int a)
{
if (a>b)
return b;
else
return a;
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表