class Box {
double weight;
double height;
double depth;
Box(Box ob){
weight = ob.weight;
height = ob.height;
depth = ob.depth;
}
Box(double w, double h, double d){
weight = w;
height = h;
depth = d;
}
Box() {
weight = -1;
height = -1;
depth = -1;
}
Box(double len){
weight = height = depth = len;
}
double volume(){
return weight * height * depth;
}
}
public class OverloadConss {
public static void main(String[] args) {
Box mybox1 = new Box (15,20,10);
Box mybox2 = new Box ();
Box mycube = new Box(7);
Box myclone = new Box (mybox1);
double vol;
vol = mybox1.volume();
System.out.println("The volume of the first box: " + vol);
vol = mybox2.volume();
System.out.println("The volume of the second box: " + vol);
vol = mycube.volume();
System.out.println("The volume of the mycube: " + vol);
vol = myclone.volume();
System.out.println("The clone of the mybox1:" + vol);
}
}
当我编译源代码时,我收到了消息:
Java / Eclipse /异常在线程“main”java.lang.NoSuchMethodError:Box。(LBox;)在OverloadConss.main(OverloadConss.java:33)
答案 0 :(得分:3)
您的代码没有问题;我在eclipse中没有任何错误地运行它。输出:
The volume of the first box: 3000.0
The volume of the second box: -1.0
The volume of the mycube: 343.0
The clone of the mybox1:3000.0
你用什么来运行脚本?如果你使用eclipse;尝试重建工作区或重写文件(复制+粘贴)。
注意:对于Box.java,我会使用类似的东西,所以如果你改变了数据结构,你只需要改变1个构造函数。
class Box {
double weight;
double height;
double depth;
Box(Box ob){
this(ob.weight, ob.height, ob.depth);
}
Box(double w, double h, double d){
weight = w;
height = h;
depth = d;
}
Box() {
this(-1, -1, -1);
}
Box(double len){
this(len, len, len);
}
// additional methods
}
答案 1 :(得分:0)
你必须在不同的.java文件中放置不同的类,它应该可以工作。
答案 2 :(得分:0)
如果两个类都在同一个文件中,那么我不知道这是怎么发生的。 OverloadConss.main
被称为已定义的Box
构造函数。
如果它们位于两个单独的文件中,那么我的猜测是您最近添加了Box.Box(Box)
并且之后没有重新编译Box.java
。 Java能够访问某些Box类,因此您无法获得ClassNotFoundException
最好的办法是删除所有.class
个文件并重新编译。