黑马程序员技术交流社区

标题: 写了段代码,编译后没有生成主函数,急求解 [打印本页]

作者: 清心玉质    时间: 2013-7-17 23:28
标题: 写了段代码,编译后没有生成主函数,急求解
本帖最后由 杨兴庭 于 2013-7-18 18:07 编辑

定义了一个外部类Outer,在Outer里定义了内部类Inner,在主函数里调用内部类的方法。编译通过后,生成了Outer类文件,却没有生成主函数类文件,什么原因呢?
class Outer
{
private static int x = 4;
static class Inner
{
  static void function()
  {System.out.println("inner"+x);}
  
}
void method()
{
  Inner in = new Inner();
  in.function();
}
}
class  InnerClassDemo
{
public static void main(String[] args)
{
  System.out.println("Hello World!");
  //直接访问内部类中的成员
//  Outer.Inner in = new Outer().new Inner();
//  in.function();
  new Outer.Inner().function();
}
}


作者: 张云杰    时间: 2013-7-17 23:49
InnerClassDemo  你给这个类前面加上public 看看
作者: 吴清源    时间: 2013-7-17 23:56
class  InnerClassDemo这个类要加上public,java虚拟机才能够访问执行,不然生成不了主函数类
作者: crazy_primitive    时间: 2013-7-18 02:16
你这个没问题啊,我复制下来在控制台上编译执行都没问题啊,你是不是打成:javac Outer.java ? 应该是:javac InnerClassDemo.java
作者: crazy_primitive    时间: 2013-7-18 02:18
本帖最后由 crazy_primitive 于 2013-7-18 02:21 编辑


作者: yinjiek    时间: 2013-7-18 02:53
  static void function() static不能加,static不能被创建实例对象调用,可以通过类名直接点出来。
作者: 冒烟的芒果    时间: 2013-7-18 09:43
如果在主函数类的前面加 public 那么这个java文件名就必须与主函数类的名字相同
如果不加 public 那文件名就随便了(楼主应该是这种情况)
是编译之后 主函数类文件名应该是 InnerClassDemo.class;
这段代码没有问题,编译之后有主函数类文件。
作者: 清心玉质    时间: 2013-7-18 21:26
谢谢啦 是忘了写public了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2