黑马程序员技术交流社区

标题: 内部类问题 [打印本页]

作者: 唐僧踏歌    时间: 2014-4-23 15:44
标题: 内部类问题
本帖最后由 唐僧踏歌 于 2014-4-30 20:30 编辑
  1. class China
  2. {   final String nationalAnthem="义勇军进行曲";
  3.     Beijing beijing;                  
  4.     China()
  5.     {  beijing=new Beijing();
  6.     }
  7.     String getSong()
  8.     {  return nationalAnthem;
  9.     }
  10.    class Beijing           
  11.     {   String name="北京";
  12.         void speak()
  13.         {  System.out.println("我们是"+name+" 我们的国歌是:"+getSong());
  14.         }
  15.     }
  16. }
  17. public class InnerTest1
  18. {
  19.   public static void main()
  20.   {
  21.           China china=new China();
  22.           china.beijing.speak();
  23.   }

  24. }
复制代码
为什么以上程序不能运行?


作者: a3330682    时间: 2014-4-23 15:57
你要调用内部类方法就要建立内部类的对象!应该是China.BeiJing beijing=new China().new BeiJing();
作者: igi9009    时间: 2014-4-23 17:20
本帖最后由 igi9009 于 2014-4-23 17:22 编辑

问题有好几个:主函数必须写全,还有就是建立内部对象写错了,应该写成China china=new China();
          China.Beijing  bj=china.new Beijing();
          bj.speak();帮你做了点修改就能运行了,正确程序如下
  1. class China

  2. {   final String nationalAnthem="义勇军进行曲";

  3.     //Beijing beijing;                  

  4.   public China()

  5.    { China.Beijing beijing=new Beijing();

  6.     }

  7.    public String getSong()

  8.     {  return nationalAnthem;

  9.     }

  10.   public class Beijing           

  11.     {   String name="北京";

  12.         void speak()

  13.         {  System.out.println("我们是"+name+" 我们的国歌是:"+getSong());

  14.         }

  15.     }

  16. }

  17. public class InnerTest1

  18. {

  19.   public static void main(String[] args)

  20.   {

  21.           China china=new China();
  22.           China.Beijing  bj=china.new Beijing();
  23.           bj.speak();

  24.   }



  25. }
复制代码

作者: 倪大大    时间: 2014-4-23 17:27
你内部类调用出现问题 要加上外部类名调用
作者: 한숨짓다    时间: 2014-4-24 00:09
这个程序是很不错的,但是在InnerTest1中的主方法main中没有写public static void main(String[] args)加上其中的参数就没事了。调用内部类的了例子,还不错的。
作者: 清风夜独醉    时间: 2014-4-24 00:26
这个public class InnerTest1 {   public static void main()   {           China china=new China();           china.beijing.speak();   }  }main函数写错了,其他没什么问题public class InnerTest1 {          public static void main(String[] args) {                 China china=new China();         china.beijing.speak();// TODO Auto-generated method stub          } }




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