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#],那么可能是另一种情况,但我不熟悉任何语言,在这种情况下)。