黑马程序员技术交流社区

标题: 关于调用内部类方法 [打印本页]

作者: 石头135    时间: 2013-5-16 19:56
标题: 关于调用内部类方法
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();执行,思想是错在那里?望指导!
作者: 葛晓红    时间: 2013-5-16 20:23
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();

作者: 张甲甲    时间: 2013-5-16 20:25
i.show()是方法调用啊  你应该写到一个方法体内 亲。。。。。
作者: xiewen    时间: 2013-5-27 19:16
i.show();要写在方法体内
作者: 袁梦希    时间: 2013-5-29 17:13
如果问题已经解决,请把帖子的类型改为已经解决,如果不会解决请看我的个性签名。
作者: 张林敏    时间: 2013-5-30 13:06
看的好像的、有点别扭,调用方法应该是在方法内进行调用,没有在类中进行调用的
作者: 冒烟的芒果    时间: 2013-7-17 10:28
LZ这个思想错得有点离谱,首先,类的构成:属性和方法;
作者: 冒烟的芒果    时间: 2013-7-17 10:30
本帖最后由 冒烟的芒果 于 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. }
复制代码





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