日期:2014-05-20  浏览次数:20606 次

问个编译指令和构造函数问题
一:
若有两个文件:one.java       two.java   ,在   one.java   中要用到   two.class。

理论上要先编译   two.java   然后再编译   one.java   才不致报错。

但   javac   *.java     这个命令,编译当前目录下所有   .java   文件。又没有指定先编译哪个文件,为什么不报错?

二:
为什么在构造函数前加访问权限(public   ,……),返回类型,结果不报错?

------解决方案--------------------
1、说明sun在作javac命令时候已经考虑到了这一点
2、编译器没有把你那个方法当作构造函数,class是可以不写构造函数的,默认会有无参的构造函数的说
------解决方案--------------------
一:
若有两个文件:one.java two.java ,在 one.java 中要用到 two.class。

理论上要先编译 two.java 然后再编译 one.java 才不致报错。

但 javac *.java 这个命令,编译当前目录下所有 .java 文件。又没有指定先编译哪个文件,为什么不报错?


这在Java中叫做:动态绑定...所以只要你编译one.java就会调用two.java的...
------解决方案--------------------
二:
为什么在构造函数前加访问权限(public ,……),返回类型,结果不报错?

在构造方法中加返回类型是会报错的.....

你编译时候不不报错么?
加访问权限是肯定不会报错的
------解决方案--------------------
这个不叫重载,只是定义了一个跟类名相同的方法。
理论上可行,实践中不推荐。
------解决方案--------------------
楼上说的不错,补充一点,构造函数前面加限定字段(public,private等)是完全可行的;如果加上private,那么在别的类中就不能实例化这个类,这在单例模式中常常用到。