方法的重载与重写 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。我想问一下,为什么不以返回值的类型也作为判断标准呢,JVM在这里是怎样工作的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题think in java 里有提到。两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo(); 但程序员直接使用XXX.getNo();也是可以的。这样的话就无法与第二个方法区别,系统就无法区分该执行哪个方法了。 这个问题think in java 里有提到。两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo(); 但程序员直接使用XXX.getNo();也是可以的。这样的话就无法与第二个方法区别,系统就无法区分该执行哪个方法了。 主要是因为java调用函数时可以不使用赋值语句 这样的例子太多了。int getNo()、short getNo();直接调用 getNo();你选择哪个。在举个例子double a = getNo();当然光举例不能说明问题。有的时候一个函数有没有返回值并不重要,但是参数是必须要考虑的问题。 method的名字和parameter的类型被称为method的signature,要完整的表述一个method就需要确定其signature。假如return value也是signature的一部分那么假设有两个method分别为:public String getWhatIHave(String s)和public void getWhatIHave(String s);则可以overload这两个method。虽然如果在程序中调用:String giveMeWhatYouHave = MyClass.getWhatIHave(String s);可以区分上面两个method,但如果如果程序为:MyClass.getWhatIHave(String s);Java则无法分辨该两种method。 [Quote=引用 11 楼 的回复:]重载是在横向的,一个类内部的方法间重写是纵向的,是父类和子类间的签名一样的方法间,是子类以另一种方式实现父类里的同签名方法[/Quote写的不错 JVM可以接收的 方法里面的参数,返回类型,并不是JVM所关心的,一个方法的使用,在经JVM的时候,JVM参考的是他的参数。 明白不? 这个问题think in java 里有提到。两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo(); 但程序员直接使用XXX.getNo();也是可以的。 因为你调用方法的时候不会调用方法类型,只会用到方法名和参数举个例子说明返回值起不到区分作用Class XXX{void getName();String getName();} 后来调用了System.out.println(xxx.getName());这时候无法知道到底调用了哪一个方法,所以返回值不能作为重载的区分标准 求教java 如何在构造函数中获取图片的长,宽! 大侠,救命哦!如何设置环境变量使下面程序运行成功呀? 鼠标单击与双击的区分 高手能否指点一下:用g2.drawRect()方法画的矩形怎么样旋转啊?用g2.rotate()好像不行 如何将对象转换成String 类型输出? 怎样通过程序打开网站浏览 jb6:一个主窗体中的cardlayout布局管理器可以用来管理多个窗体吗? [送分族] ...我选择,我喜欢...:庆祝技术分超过1000分/12月 appletviewer 是否忽略classpath路径,只认当前路径. 如何实例一个用变量表示的类 程序一:请各位高手看看,为什么出错
两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo(); 但程序员直接使用XXX.getNo();也是可以的。这样的话就无法与第二个方法区别,系统就无法区分该执行哪个方法了。
两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo(); 但程序员直接使用XXX.getNo();也是可以的。这样的话就无法与第二个方法区别,系统就无法区分该执行哪个方法了。
int getNo()、short getNo();
直接调用 getNo();
你选择哪个。
在举个例子
double a = getNo();
当然光举例不能说明问题。
有的时候一个函数有没有返回值并不重要,但是参数是必须要考虑的问题。
要完整的表述一个method就需要确定其signature。假如return value也是signature的一部分
那么假设有两个method分别为:
public String getWhatIHave(String s)和
public void getWhatIHave(String s);
则可以overload这两个method。虽然如果在程序中调用:
String giveMeWhatYouHave = MyClass.getWhatIHave(String s);
可以区分上面两个method,但如果如果程序为:
MyClass.getWhatIHave(String s);
Java则无法分辨该两种method。
重写是纵向的,是父类和子类间的签名一样的方法间,是子类以另一种方式实现父类里的同签名方法
[/Quote
写的不错
明白不?
两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo(); 但程序员直接使用XXX.getNo();也是可以的。
void getName();
String getName();
} 后来调用了System.out.println(xxx.getName());这时候无法知道到底调用了哪一个方法,所以返回值不能作为重载的区分标准