BartonZhang 发表于 2003-8-6 16:41:00

Java问题 Two

在学《thinking in java》时,里面有个例子,是“以建构式确保初始化的进行”
里面的程序是这样的:

class Rock2{
Rock2(){
   System.out.println("Creating"+i);
}
}

public class ABC{
public static void main(String args[]){
   for(int i=0;i<10;i++)
      new Rock2(i);
}
}


第一个CLASS可以正常编译,
可是在编译第二个CLASS的时候,就说Rock()找不到。
请问怎么解决?

myong 发表于 2003-8-6 17:07:28

兄弟,你的构造函数和类的名都不一样!

myong 发表于 2003-8-6 17:09:24

类名全不对!

BartonZhang 发表于 2003-8-6 17:28:55

对不起,打快了点,没发现错误。
现在已经修改过了。
可是编译的时候小指针还是指在下面的new Rock2(i)这里。

goldedge 发表于 2003-8-6 18:21:56


可是编译的时候小指针还是指在下面的new Rock2(i)这里。

啥意思?

langwuji 发表于 2003-8-6 18:57:58

你的构造函数好像没有参数吧?

BartonZhang 发表于 2003-8-6 21:51:12


可是编译的时候小指针还是指在下面的new Rock2(i)这里。

啥意思?
就是说这里是错误的

camel 发表于 2003-8-7 01:21:02

一个class的构造函数默认是 class(){},如果你想在new时加参数,需要多态你的class的构造函数,使其与引用的形式一致.你可以改成如下就行了:
class Rock2{
        Rock2(){}
        Rock2(int i){
            System.out.println("Creating"+i);
        }
}
public class ABC{
        public static void main(String args[]){
           for(int i=0;i<10;i++)
              new Rock2(i);
        }
}

wsm 发表于 2003-8-7 09:40:56

除了以上的几点 还有一个java里是不鼓励对类使用默认修饰符的 最好还是一个类一个文件的写

goldedge 发表于 2003-8-7 09:43:01


Rock2(int i){
System.out.println("Creating"+i);
}

BartonZhang 发表于 2003-8-7 09:43:07

哦,是不是说我下面的那个 new Rock2(i)是想调用上面的Rock2()函数,但是上面的Rock()函数并没有引数的定义,所以就出错了。

camel 发表于 2003-8-7 14:25:10

9494

camel 发表于 2003-8-7 14:31:37

9494

BartonZhang 发表于 2003-8-7 15:46:52

可编译还是错啊。
好像是它在编译下面这个CLASS的时候,不知道这个Rock应该到什么地方去找。
你自己试过了吗?成功了吗?

BartonZhang 发表于 2003-8-7 16:09:30

This is the screenshot from <Thinking in java>
http://my.6to23.com/bartonzhang/tmp/07082003_1.png
页: [1] 2
查看完整版本: Java问题 Two