1.public class example{
2. private int Year;
3. private boolean isLeepYear(){
4. return(Year%4==0&&Year%100!=0)||(Year%400==0);
5. }
6. public static void main(String args[]){
7. example Date=new example();
8. Date.Year=2005;
9. if (Date.isLeepYear()){
10. System.out.println(Date.Year+"闰年");
11. }else{
12.    System.out.println(Date.Year+"不是闰年");
13. }
14. }
15.}问题:1、程序中的第7行,example Date=new example();不明白为什么这样实例化,既然example类在main之外,怎么可以在main里使用example呢?2、第9行,private既然是私有的其他类不能访问,那在main里怎么可以访问isLeepYear呢3、第6行,既然程序是从main开始执行的,为什么main外面要加个example类呢?可能问题比较可笑,但谢谢大家!!!

解决方案 »

  1.   

    1、程序中的第7行,example Date=new example();不明白为什么这样实例化,既然example类在main之外,怎么可以在main里使用example呢?main是主函数,example是对象
    2、第9行,private既然是私有的其他类不能访问,那在main里怎么可以访问isLeepYear呢
    私有是指对于其他的类来说,而main是主函数 和私有没有关系3、第6行,既然程序是从main开始执行的,为什么main外面要加个example类呢?
    建议楼主好好再看看书
      

  2.   

    我想楼主是把JAVA类的结构跟C++类的结构混淆了,C++的对象建立是放在类外面的吧?偶也是新手,不知道说得对不,等大虾解释下吧
      

  3.   

    1、程序中的第7行,example Date=new example();不明白为什么这样实例化,既然example类在main之外,怎么可以在main里使用example呢?
    答:楼主创建了一个名为example的类,main方法是隶属于这个类的,example Date=new example();中 example Date 是创建example的一个名为Date的对象变量,而new example()是新创建一个example对象,总体这句example Date=new example();的意思就是把这个变量指向这个对象。2、第9行,private既然是私有的其他类不能访问,那在main里怎么可以访问isLeepYear呢答: private 的含义是只有类本身可以访问,main是属于 example类的方法, 当然可以访问本身的私有变量了,楼主要明白main是这个类的主方法,不是其他类。
    3、第6行,既然程序是从main开始执行的,为什么main外面要加个example类呢?
    答:这个问题不知道楼主的意思,大概明白了第二个问题的回答,就应该明白了,main是个方法,当然要在一个包含它的类里了。不知道我的回答,楼主是否明白,共勉。
      

  4.   

    java程序是由一个一个类组成的,没有单独的方法独立存在于类之外,main方法也一样
      

  5.   

    楼主现在是面向对象了,多看看书吧!zuichubaise() 的解释非常清楚!相信楼主会明白吧!
      

  6.   

    忘了说一下了,isLeapYear是判断闰年,楼主里写的是isLeepYear()
      

  7.   

    呵呵 在这里我只能给楼主回答第二个问题(因为其他的问题问的就有毛病!建议楼主还得多看看书,多了解一下面向对象到底是什么意思)private访问控制符只有类内的方法可以访问,而因为main()函数在Example类内,所以可以访问。
      

  8.   

    1.public class example{
    2.private int Year;
    3.private boolean isLeepYear(){
    4.return(Year%4==0&&Year%100!=0)||(Year%400==0);
    5.}
    6.public static void main(String args[]){
    7.exampleDate=new example();
    8.Date.Year=2005;
    9.if (Date.isLeepYear()){
    10.System.out.println(Date.Year+"闰年");
    11.}else{
    12.  System.out.println(Date.Year+"不是闰年");
    13.}
    14.}
    15.}
    1、程序中的第7行,example Date=new example();不明白为什么这样实例化,既然example类在main之外,怎么可以在main里使用example呢?
    答:对象实例化就是用这种语句.zuichubaise() 的解释非常清楚!但是楼主的疑问应该是:怎么可以在example类内实例化本类呢.不知道对不对?答案有两部分:第一,example类内可以实例化本类,第二,example类内实例化本类和类内实例化其他类是本质是一样的.楼主的第二个疑问应该是main()怎么可以访问example类对象?答案也是很简单的,对象可以在任何类的方法被访问,包括其他类.当然楼主的8.Date.Year=2005;比较特别,只能在类内方法访问,因为Year是private的.又因为main()是一个类内的方法,所以可以8.Date.Year=2005;2、第9行,private既然是私有的其他类不能访问,那在main里怎么可以访问isLeepYear呢
    答案:呵呵,这个语句性质和8.Date.Year=2005;是一样的,答案应该也是一样的.就是main()是类内的方法.3、第6行,既然程序是从main开始执行的,为什么main外面要加个example类呢?
    答案:java的所有的方法都封装在类中,main()方法也不例外.
    看起来楼主对于example类内实例化本类很不习惯.总是觉得越级了.其实这种担心是没有必要的.因为JVM先装载main()所在的类,然后再执行main()内的代码.所以在7.exampleDate=new example();之前,已经有了一个对象的"模子",执行到这一句,就直接实例化.这个过程和实例化其他的类本质上是一样的.
    偶也是新手,不知道说得对不对
      

  9.   

    既然example类在main之外,怎么可以在main里使用example呢?
    这句话应该是有语病的
      

  10.   

    其实程序可以改写成
    public class Example{
      private static int Year;
      private static boolean isLeepYear(){
      return(Year%4==0&&Year%100!=0)||(Year%400==0);
      }
      public static void main(String args[]){
      
      Year=2005;
      if (isLeepYear()){
      System.out.println( Year+"闰年");
      }
      else{
      System.out.println( Year+"不是闰年");
      }
     }
    }
    不知道楼主能不能理解 
      

  11.   

    graybaby 说的解释感觉有点小错误嘛,"main是主函数,example是对象"example是类,而Data才是对象哦 
    私有我觉得是类里面的私有成员不能不外部实体调用,只能被类对象访问
      

  12.   

    1.main方法是个static方法,并且比较特殊,有别于其它方法.当程序运行时main方法先于类的实例化被JVM调用,在它里面当然可以实例化本类,要不然怎么调用这个类里的其它方法呢?就像一个项目组一定要有一个leader一样.2.private是私有的其他类确实不能访问,但Date是个example类的对像,调用自己的私有方法应该没有问题.3.任何方法都要包含在类中,main方法尽管特殊也不例外.就像程序员,不管是PG还是PM都要从属于一个项目组,游离于项目组之外是不行的.这是我的一点理解,不知道是不是正确.我又有一个新问题,请高手指教一下:
    main方法和构造方法哪一个先被调用呢?
      

  13.   

    1.java中在主函数main()中初始化自己的本身类的实例是可以的就像直接用new example()一样,在下面的data.Year改成this.Year或者是直接写Year就可以.
    2.data是本类的一个实例对象,Year自然就是他的一个属性,所以更改自己的属性是可以的
    3.main函数是application中的主函数,一个完整的java程序中当然要有类,总之LZ把第一个问题搞懂了就懂了第三个问题了.
    只是自己的一些解释,有不好的地方还请大虾指教~~`
      

  14.   

    说来说去,这就是Java语言定义的。
    Java规定:
    1、任何函数(方法)、变量、常量都必须置于类中,只有抽象概念“包/Package”是在类之外的,类包含在包中;
    2、类中的成员可以立即引用类本身;
    3、Java应用程序以一个类的静态方法main为入口,它类似于C/C++中的main函数,除了它是类中的一个方法,它的格式必须为: public static void main( String []args ); 包含main方法的类必须是public且非抽象的;
    4、类中的任何代码都可以访问类中的任何元素,包括私有的。另外,子类可以访问父类中保护成员,同一个包中的类中的代码可以访问没有标识为private、protected、public的成员;任何代码都可以访问标为public的成员。其它的,看看Java教材。
      

  15.   

    .main方法是程序运行的入口,如果类没有这个方法是不可以作为程序运行,只能被其它类调用。main方法应该先于构造函数调用
      

  16.   

    public class example
    {
    private int Year;
    private boolean isLeepYear()
    {
    return(Year%4==0&&Year%100!=0)||(Year%400==0);
    }
    public static void main(String args[])
    {
    example Date=new example();
    Date.Year=2005;
    if (Date.isLeepYear())
    {
    System.out.println(Date.Year+"闰年");
    }
    else
    {
    System.out.println(Date.Year+"不是闰年");
    }
    }
    }这是完整的结构,楼主看看清楚啊
      

  17.   

    java运行的顺序是,如果是Application, 先实例化这个类(构造函数和静态语句块被执行),然后找到main方法运行。这是Java Application的入口。
      

  18.   

    第一条不解释
    第2,3条:main也属于EXAMPLE类的方法,当然可以在方法内调用private方法了,
      

  19.   

    1.因为main()只是类example的一个方法,所以可以使用,这只是创建了一个引用,使Data指向一个example实例
    2.同样,因为main()是类example的一个方法,所以,私有变量可以被访问啊!
    3.main()是整个程序的入口,剩下的吗,可能看书会比较明白
      

  20.   

    1,程序中的第7行,example Date=new example();不明白为什么这样实例化,既然example类在main之外,怎么可以在main里使用example呢?
    答:作程序,一定在大脑中有一个内存的概念.
    首先,程序是由main开始的,在内存中把main放进堆栈里面,而对象是在堆里面的,main不能去调用堆里面的东西,就想C的指针一样,没有东西指向它,所以,要在main里面去new 一个对象,用这个对象去指向这个堆里面的类.
    我不知道我这样说你是否回理解.
    2,第9行,private既然是私有的其他类不能访问,那在main里怎么可以访问isLeepYear呢?
    答:对类的属性的私有,公共,受保护只是相对与其他的类而言的,main是一个静态的方法,是主函数,所以是可以调用的.
    3,第6行,既然程序是从main开始执行的,为什么main外面要加个example类呢?
    答:这个题的答案和1有些相似,就是你要对类和属性在内存的什么位置放,怎样调用,有一个比较真确的理解.还有,在JAVA这样的面向对象语言中,类无处无在.
    上面是我的一些拙见,尽管拿砖来拍,哈哈.
    建议楼主还是好好看书,把面向对象好好理解下,重要的是,在大脑中要有一个内存的概念,这样,你无论是做C还是C++,对指针这样的问题就不会很难理解了.