Java构造函数看起来不应该这样

时间:2014-03-24 21:42:43

标签: java default-constructor

我正在引用Y. Daniel Liang的书" Java编程简介,综合版,第9版"当我问这个问题时每次我看到使用构造函数创建的对象时,都会出现这样的情况:

Car engine = new Car(). 

但是在Daniel Liang的书中,我发现了以下代码(这里只写了前9行):

   public class SimpleGeometricObject {
      private String color = "white";
      private boolean filled;
      private java.util.Date dateCreated;

      /** Construct a default geometric object */
      public SimpleGeometricObject() {
         dateCreated = new java.util.Date();
   }

我不明白的是对象" dateCreated"不是以正常方式创建的,即:

SimpleGeometricObject dateCreated = new SimpleGeometrciObject();

我很困惑。

4 个答案:

答案 0 :(得分:2)

实际上,dateCreated是Class Date中的一个Object,它位于java.util包中 并且在您定义的对象内部是SimpleGeoMetricObject

换句话说,Java家伙写道:

  package java.util;

 public Class Date{
    //with its own attributes 
   public Date(){
      ...
    //and its own constructor
   }
     ...//and it's own methods
}

并将它提供给开发人员,以便我们可以在我们自己的类/对象中使用它,顺便说一下,如果你在文件的开头导入像这个import java.util.Date;这样的包,你只需要像下面那样构造Date :Date objectDate = new Date();

答案 1 :(得分:0)

dateCreated只是SimpleGeometricObject的一个属性/变量。所以dateCreated的类型是Date,你在技术上使用:

来调用它的构造函数
dateCreated = new java.util.Date();

答案 2 :(得分:0)

你不需要这个:

java.util.Date dateCreated=new java.util.Date();

因为dateCreated字段数据类型已在以下位置定义:

private java.util.Date dateCreated;

所以,基本上:

 private java.util.Date dateCreated 

定义数据类型,但初始化为null和

 dateCreated=new java.util.Date();

将默认值初始化为dateCreated对象

答案 3 :(得分:0)

他只使用了Date类的完整限定名,包括包名“java.util”。仅根据我们在此处看到的内容,他没有理由这样做。唯一真正的理由是,如果有另一个类,在另一个包中,也称为Date,他需要能够区分这两个。或者他可能只是出于某种原因指出,Date类在那个特定的包中。