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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 石头135 中级黑马   /  2013-5-16 19:56  /  1836 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Outer
{
       
       
        class Inner
        {
                public void show()
                {
                System.out.println("show ");
                }
        }
       
        Inner i= new Inner();
        i.show();
}

class  Demo2
{
        public static void main(String[] args)
        {
                Outer o=new Outer();
               
        }
}

为什么Inner i= new Inner();可以执行,i.show(); 这个语句会报错,,两个语句可以一起看成类的显示初始化吗?new Outer();时Outer类初始化,Inner i= new Inner();执行,i.show();执行,思想是错在那里?望指导!

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

7 个回复

倒序浏览
class Outer
{
         
         
         class Inner
         {
                 public void show()
                 {
                 System.out.println("show ");
                 }
         }
         
         //Inner i= new Inner();
         //i.show();
}

class  Demo2
{
         public static void main(String[] args)
         {
                 Outer.Inner o=new Outer().new Inner();
                                 o.show();
                 
         }
}
当内部类定义在外部类的成员位置时,需要在外部其他类中建立内部类对象来访问内部类。格式是:Outer.Inner 变量名=new Outer().new Inner();
回复 使用道具 举报
i.show()是方法调用啊  你应该写到一个方法体内 亲。。。。。
回复 使用道具 举报
i.show();要写在方法体内
回复 使用道具 举报
如果问题已经解决,请把帖子的类型改为已经解决,如果不会解决请看我的个性签名。
回复 使用道具 举报
看的好像的、有点别扭,调用方法应该是在方法内进行调用,没有在类中进行调用的
回复 使用道具 举报
LZ这个思想错得有点离谱,首先,类的构成:属性和方法;
回复 使用道具 举报
本帖最后由 冒烟的芒果 于 2013-7-17 10:39 编辑
冒烟的芒果 发表于 2013-7-17 10:28
LZ这个思想错得有点离谱,首先,类的构成:属性和方法;

不知道LZ在Outer类中 写“ Inner i = Inner()” 和"i.show()"是什么心态; 然后,在主函数中创建一个对象,只会调用这个类的构造函数,并不会调用其他方法

解决办法:可以把Inner i = Inner();i.show();这两句写进Outer类的构造函数中
  1. class Outer
  2. {
  3.         class Inner
  4.         {
  5.                 public void show()
  6.                 {
  7.                 System.out.println("show ");
  8.                 }
  9.         }
  10. //构造函数
  11.        public Outer(){
  12.         Inner i= new Inner();
  13.         i.show();
  14.            }
  15. }

  16. class  Test
  17. {
  18.         public static void main(String[] args)
  19.         {
  20.                 Outer o=new Outer();
  21.                
  22.         }
  23. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马