我原来对JAVA中main函数的理解仅限于"程序执行的入口",但是拜读了<<JAVA编程思想>>后对main函数的理解发生了疑惑1.程序中的每个类都可以有一个main函数,但是程序执行的时候只执行最先出现的main类.
例如:
class Father {
public void showFather() {
System.out.println( "I'm father." ) ;
}
public static void main( String args[] ) {
Father F = new Father() ;
F.showFather() ;
}
}class Son {
public void showSon() {
System.out.println( "I'm son." ) ;
}
public static void main( String args[] ) {
Son S = new Son() ;
S.showSon() ;
}
}
程序执行的结果是:"I'm father.",显然没有执行Son类的主函数,难道编译器认为第一次出现的main函数为程序的入口......
但像Java这样模块化的语言不应该使用如此的落后的形势吧.2.既然每个类都可以有一个main函数,那为什么我又不可以通过"类名.函数名"的方式在类的其他方法中显示的调用main函数呢?
例如:
class Father{
public void showFather() {
Father.main(args) ;
System.out.println( "I'm father." ) ;
}
public static void main( String args[] ) {
Father F = new Father() ;
F.showFather() ;
}
}class Son {
public void showSon() { Son.main(args) ;
System.out.println( "I'm son." ) ;
}
public static void main( String args[] ) {
Son S = new Son() ;
S.showSon() ;
}
}
编译器报错:"找不到符号",问题似乎就出在Father.main(args)和Son.main(args)这两句上.
但是如果我把这Son.main(args)这句语言放到Son类的main函数中就可以了..
class Father{
public void showFather() {
System.out.println( "I'm father." ) ;
}
public static void main( String args[] ) {
Father F = new Father() ;
F.showFather() ;
}
}class Son {
public void showSon() {
System.out.println( "I'm son." ) ;
}
public static void main( String args[] ) {
Son S = new Son() ;
S.showSon() ;
Son.main(args) ;
}
}
程序执行结果:"I'm father.",虽然我在Son类的main函数中以"类名.函数名"的方式调用了Son类的main函数,但是似乎还以哪main出现顺序执行的,并没有输出"I'm son.".3.如果一个类中包含main函数,那个当这个类被实例化之后为什么不执行main函数中的指令.(这是我朋友的问题,我个人认为实例化类并不执行他的main函数,而只执行他的构造函数,程序只有在开始的时候才开始寻找第一次出现的main函数,并执行之,不知道我的想法对不对.)4.为什么每一个编译文件只能有一个public类,而该类的main函数又不一定是程序执行的入口(当其他类也包含main函数的时候),那么这个唯一的public类又有什么实际的意义呢?5.<<Java编程思想>>中说最好给每个类都创建一个main函数,因为这样有利于程序的调试,请问这是为什么?由于本人初学Java所以所提问题难免肤浅,望指教.
例如:
class Father {
public void showFather() {
System.out.println( "I'm father." ) ;
}
public static void main( String args[] ) {
Father F = new Father() ;
F.showFather() ;
}
}class Son {
public void showSon() {
System.out.println( "I'm son." ) ;
}
public static void main( String args[] ) {
Son S = new Son() ;
S.showSon() ;
}
}
程序执行的结果是:"I'm father.",显然没有执行Son类的主函数,难道编译器认为第一次出现的main函数为程序的入口......
但像Java这样模块化的语言不应该使用如此的落后的形势吧.2.既然每个类都可以有一个main函数,那为什么我又不可以通过"类名.函数名"的方式在类的其他方法中显示的调用main函数呢?
例如:
class Father{
public void showFather() {
Father.main(args) ;
System.out.println( "I'm father." ) ;
}
public static void main( String args[] ) {
Father F = new Father() ;
F.showFather() ;
}
}class Son {
public void showSon() { Son.main(args) ;
System.out.println( "I'm son." ) ;
}
public static void main( String args[] ) {
Son S = new Son() ;
S.showSon() ;
}
}
编译器报错:"找不到符号",问题似乎就出在Father.main(args)和Son.main(args)这两句上.
但是如果我把这Son.main(args)这句语言放到Son类的main函数中就可以了..
class Father{
public void showFather() {
System.out.println( "I'm father." ) ;
}
public static void main( String args[] ) {
Father F = new Father() ;
F.showFather() ;
}
}class Son {
public void showSon() {
System.out.println( "I'm son." ) ;
}
public static void main( String args[] ) {
Son S = new Son() ;
S.showSon() ;
Son.main(args) ;
}
}
程序执行结果:"I'm father.",虽然我在Son类的main函数中以"类名.函数名"的方式调用了Son类的main函数,但是似乎还以哪main出现顺序执行的,并没有输出"I'm son.".3.如果一个类中包含main函数,那个当这个类被实例化之后为什么不执行main函数中的指令.(这是我朋友的问题,我个人认为实例化类并不执行他的main函数,而只执行他的构造函数,程序只有在开始的时候才开始寻找第一次出现的main函数,并执行之,不知道我的想法对不对.)4.为什么每一个编译文件只能有一个public类,而该类的main函数又不一定是程序执行的入口(当其他类也包含main函数的时候),那么这个唯一的public类又有什么实际的意义呢?5.<<Java编程思想>>中说最好给每个类都创建一个main函数,因为这样有利于程序的调试,请问这是为什么?由于本人初学Java所以所提问题难免肤浅,望指教.
解决方案 »
- 求解一笔试题!
- jvm运行中出现的致命问题“Out of swap space”
- java 一个类调用另一个类(想把JFrameTest6.java和JFrameTest7,java这两个类分开,写成两个文件的形式)
- 菜鸟题,请高手指教下!!!
- JDK 安装的问题——————在线等待!!!!
- java的事务处理是如何实现的?请高手举例赐教~
- 怎样产生不同的随机数?
- 浮点型数据在计算机中的存储问题
- ★★★★★★大好消息! java I love you for ever! sun 胜利了!法官裁定:120天内微软必
- 急急急急啊
- qq实现原理
- 访问oracle数据库表的非常奇怪的问题,郁闷了我半天,请朋友们帮忙!
有空可以了解一下junit
2、你的程序中是可以调用main函数的,只是你看看你的代码写对了吗?
public void showFather() {Father.main(args) ;System.out.println( "I'm father." ) ;
}
这个showFather方法中调用main没错,但你的args哪里来的?方法中并没有声明这个变量啊
Son中调用同理3、你的理解是对的,实例化是调用构造函数,并不执行main函数4、应该和1差不多5、每个类中都有很多独立的方法,写上一个main函数就可以调试你写的这些方法了