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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© U芽Lady 中级黑马   /  2013-4-17 21:07  /  2278 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 U芽Lady 于 2013-4-18 10:52 编辑

class Outer{
     class Inner{
           public void show(){
               System.out.println("11111");
           }
     }
}
class Demo{
    public static void mian(String [] args){
        Outer.Inner o = new Outer().new Inner();
         o.show();
       //我感觉这个和上面那个new的思路是一样的为什么不对呢
        Outer oo = new Outer();
        oo.Inner i1= new oo.Inner();
    }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
<   Outer.Inner o = new Outer().new Inner();//不一样的,这个是外部类直接访问内部类的格式,外部类.内部类.变量=外部类对象().内部类对象()
         o.show();
       //-------------------
        Outer oo = new Outer();
        oo.Inner i1= new oo.Inner();//oo是外部类对象
>

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
王九日 发表于 2013-4-17 21:22
<   Outer.Inner o = new Outer().new Inner();//不一样的,这个是外部类直接访问内部类的格式,外部类.内 ...

oo是外部类对象的引用
回复 使用道具 举报
真不知道怎么说了。
就说下面错误的代码吧:
Outer oo = new Outer();//创建了一个oo对象。
oo.Inner = new oo.Inner() // oo也就是一个变量名了。 所以编译过不去。
正确代码如下:
Outer.Inner i1=   new Outer().new Inner();

内部类 ; 讲一个类定义在另一个类的里面
访问规则: 内部类可以直接访问外部类中成员,包括私有,
因为内部类持有一个外部类的引用,该引用写法,格式:Outer.this
外部类要访问内部类,必须要建立对象
内部类可以被私有
访问格式:
当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中
可以直接建立内部对象
格式:
外部类名.内部类名  变量名 =   外部类对象.内部类对象;
Outer.Inner in = new Outer().new Inner();

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
       Outer.Inner o = new Outer().new Inner();
         o.show();
       //我感觉这个和上面那个new的思路是一样的为什么不对呢
        Outer oo = new Outer();
        oo.Inner i1= new oo.Inner();

虽然这个格式有不同,但其实是一种东西吧。

第一种声明格式右边: new Outer() 这个部分不正好是匿名实例化一个外部类对象么?
然后通过使用这个实例,再来new Inner() 实例化内部类对象。这不是一样么

第二种写法,只是把外部类对象起了名字分开写了吧。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马