A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 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();
}
}

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

8 个回复

倒序浏览
InnerClassDemo  你给这个类前面加上public 看看

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class  InnerClassDemo这个类要加上public,java虚拟机才能够访问执行,不然生成不了主函数类

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
你这个没问题啊,我复制下来在控制台上编译执行都没问题啊,你是不是打成:javac Outer.java ? 应该是:javac InnerClassDemo.java
回复 使用道具 举报
本帖最后由 crazy_primitive 于 2013-7-18 02:21 编辑

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
  static void function() static不能加,static不能被创建实例对象调用,可以通过类名直接点出来。
回复 使用道具 举报
如果在主函数类的前面加 public 那么这个java文件名就必须与主函数类的名字相同
如果不加 public 那文件名就随便了(楼主应该是这种情况)
是编译之后 主函数类文件名应该是 InnerClassDemo.class;
这段代码没有问题,编译之后有主函数类文件。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
谢谢啦 是忘了写public了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马