Oop 声明新对象时的差异
这是代码片段Oop 声明新对象时的差异,oop,Oop,这是代码片段 public class Square{ private double length; private double width; public Square(double a, double b){ length = a; width = b; } public static void main(String args[]){ Square box = new box(3.0,5.0); }
public class Square{
private double length;
private double width;
public Square(double a, double b){
length = a;
width = b;
}
public static void main(String args[]){
Square box = new box(3.0,5.0);
}
}
这是我的问题,squarebox=newbox(3.0,5.0)之间的区别是什么代码>和方形框=新的方形(3.0,5.0)代码>
假设新的box(3.0,5.0)将调用我没有的box构造函数。但它也会调用Square构造函数。我真的很困惑为什么这样写也是正确的区别在于新方块(3.0,5.0)
是有效的,但是新方块(3.0,5.0)
是编译错误。如果它实际上是为您编译的,那么您的项目还必须包含另一个名为box
(可能在另一个文件中)的类,而您的帖子中没有包含该类。您从哪里获得了“box”?那是Square的儿童班吗?不,但是我的讲师说这也是正确的,虽然我没有box作为Square的儿童班,所以要么你误解了你的讲师,要么你的讲师不正确,我猜最有可能的第一种情况是你现在所拥有的我知道如果我没有box类,我不能实例化box构造函数,但是我的讲师没有说这是错误的。如果你有一个名为“box”的类,它有一个以两个浮点数作为参数的构造函数,理论上是正确的。否则,没有。我同意你在这里的说法,只是不知道为什么我的讲师没有说错>@Jiazzyuser我不知道你的讲师在谈论什么,但我可以肯定地说,鉴于你发布的代码,任何对称为box
的类型的引用都是错误的。只有在某个地方声明了一个名为box
的类型时,它才会工作(在这种情况下,它不会调用Square
构造函数,除非box
类派生自Square
,或者包含Square
对象)。@dvnrrs我的讲师说我写的Square-box=newbox(3.0,5.0)
以这种方式编写也是正确的,即使没有box类existed@Jiazzyuser不正确,至少在Java中是这样的代码(如果不是Java[或C#],那么可能是另一种情况,但我不熟悉任何语言,在这种情况下)。