在main方法中创建类的对象/实例的任何特殊原因?

时间:2013-12-05 10:42:00

标签: java

我是Java新手,我的问题可能看起来太傻了。但请帮助我,因为我没有找到答案,为什么我们总是在main方法中创建对象。

我正在尝试按照我正在阅读的书中的说明执行以下代码。但是这个程序没有主要方法。所以我试图看看如何才能执行此操作。我甚至尝试在同一个包中创建另一个类。但我很无能。

public class MyDate {

   private int day=1;
   private int month=1;
   private int year=2000;
   public MyDate(int day,int month,int year)
   {
      this.day=day;
      this.month=month;
      this.year=year;
   }
   public MyDate(MyDate date)
   {
      this.day=date.day;
      this.month=date.month;
      this.year=date.year;
   }
   public MyDate addDays(int moreDays)
   {
      MyDate newDate=new MyDate(this);
      newDate.day=newDate.day+moreDays;
      return newDate;
   }        
   @Override
   public String toString()
   {        
      return " "+day+ "-"+month+ "-"+year;
   }
}      

所以我尝试在这个相同的包中用main方法创建另一个类。我在那里创建了MyDate类的对象,并尝试访问方法addDays。但即使那样也行不通。该计划如下。

public class NewClass {
   public static void main (String args[])
   {
      MyDate date1 = null,c;
      c=date1.addDays(5);
   }
}

3 个答案:

答案 0 :(得分:0)

Class具有访问限制,因为它只是一个容纳其中的属性和方法的容器。 Instance / Object表示Class的所有权。因此,要访问Class数据,您需要实例化对该类的引用(称为Object),您可以通过该引用访问数据。

答案 1 :(得分:0)

这是因为一个程序需要一个静态入口点(main方法本身),并且大多数功能通常在类中实现,以使用您需要一个实例(类的对象)的类提供的功能。

对于问题的编辑版本,您忘记调用构造函数:

public class NewClass {
   public static void main (String args[])
   {
      MyDate date1 = new MyDate(1,1,2000); // new calls the constructor (creates a new object)
      MyDate c=date1.addDays(5);
   }
}

答案 2 :(得分:0)

事实并非如此。如果我们想在任何类中调用任何方法,我们必须初始化该类(正如你所说的创建Object)。在Java主方法是一个程序的起点,这就是为什么很多时候你会看到这样的东西..