//这是THINKING IN JAVA 3rd上面P90页的一段程序~有几个问题请教下~谢谢import com.bruceecke1.simpletest.*;
class Rock2
{
   Rock(int i)
   {
     system.out.println("creating rock number"+i);
   }
}
public class SimpleConstructor2     //这个类之前为什么要写public,而其他的类不写呢?类为什么要弄成公有、私有或者保护呢?应该只有成员函数才声明访问权限啊~~
{
   static Test monitor=new Test();      //建立monitor这个对象是做什么用的?Text这个类应该是在com.bruceecke1.simpletest这个包里吧?~
   public static void main(string[] args)     //为什么有的书写的是string args[] ?~这两种写法有什么不一样的~还有就是声明成静态的和非静态的在这里有什么区别?~
   {
     for(int i=0;i<10;i++)
     {
       new Rock2(i);    //这个new指的是创建rock2(int i)吗?就象创建对象一样?
     }
     monitor.expect(new String[]     //从这里开始,以下这些是什么啊~这应该是输出的结果啊~
     {
       "creating rock number 0",
       "creating rock number 1",
       "creating rock number 2",
       "creating rock number 3",
       "creating rock number 4",
       "creating rock number 5",
       "creating rock number 6",
       "creating rock number 7",
       "creating rock number 8",
       "creating rock number 9"
     });
   }
}
构造函数可以不写吗?直接写几个实现功能的成员函数~比如在一个pig的类中,就写eat()、sleep()这2个成员函数行吗?~编译器自动调用构造函数吗?不使用构造函数,调用它有什么用呢?~

解决方案 »

  1.   

    楼主一大堆很基础的问题,却只有10分啊
    1。一个java文件只能有一个public类,该类与文件名相同且大小写敏感
    2。monitor是做测试用的,具体你看bruceeckel的源代码吧
    3。String[]args 和String args[]没区别,只不过前者更加面向对象化一点,表示字符串数组,名为args
    4。这个就是创建对象,什么叫像创建对象一样的,不知道楼主是怎么创建的
    5。看monitor那个相关源码吧
    6。构造函数可以缺省,调用时候当然只能是无参的了,且一些变量的初始化可能要在声明时候完成了
      

  2.   

    补充一下:1. 关于public等访问修饰符的用法, 第五章有详细的解释.2. 构造函数是在构造对象时最后完成的一步操作, 是在空间分配之后的工作.
    一个构造函数可以什么都不做, 但是每个类必须至少有一个构造函数.
    如果你没有在自己的类里明确书写构造函数, 编译器会在编译该类时为你自动加上一个不带参数的, 没有实际代码的构造函数.
    当然, 构造函数里没有实际代码, 并不一定代表构造函数什么都不做. 因为它会自动调用父类中那个不带参数的构造函数, 而父类又会调用它的父类, 一直追溯到Object ---- 类层次的最顶端.