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()找不到。
请问怎么解决? 兄弟,你的构造函数和类的名都不一样! 类名全不对! 对不起,打快了点,没发现错误。
现在已经修改过了。
可是编译的时候小指针还是指在下面的new Rock2(i)这里。
可是编译的时候小指针还是指在下面的new Rock2(i)这里。
啥意思? 你的构造函数好像没有参数吧?
可是编译的时候小指针还是指在下面的new Rock2(i)这里。
啥意思?
就是说这里是错误的 一个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);
}
} 除了以上的几点 还有一个java里是不鼓励对类使用默认修饰符的 最好还是一个类一个文件的写
Rock2(int i){
System.out.println("Creating"+i);
}
哦,是不是说我下面的那个 new Rock2(i)是想调用上面的Rock2()函数,但是上面的Rock()函数并没有引数的定义,所以就出错了。 9494 9494 可编译还是错啊。
好像是它在编译下面这个CLASS的时候,不知道这个Rock应该到什么地方去找。
你自己试过了吗?成功了吗? This is the screenshot from <Thinking in java>
http://my.6to23.com/bartonzhang/tmp/07082003_1.png
页:
[1]
2