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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马王晓明 中级黑马   /  2013-8-10 20:27  /  1518 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马王晓明 于 2013-8-11 00:47 编辑

创建一个包含实例内部类的类 这句话怎么理解 最好能举例说明
class Outer{
        class Inner{}
}

这样写是否满足了这句话的要求?

5 个回复

倒序浏览
成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。
      要注意的是,成员内部类不能含有static的变量和方法。因为成员内部类需要先创建了外部类,才能创建它自己的。
      在成员内部类要引用外部类对象时,使用outer.this来表示外部类对象;
      而需要创建内部类对象,可以使用outer.inner  obj = outerobj.new inner();
public class Outer {
    public static void main(String[] args) {
        Outer outer = new Outer();
        Outer.Inner inner = outer.new Inner();
        inner.print("Outer.new");

        inner = outer.getInner();
        inner.print("Outer.get");
    }

    // 个人推荐使用getxxx()来获取成员内部类,尤其是该内部类的构造函数无参数时
    public Inner getInner() {
        return new Inner();
    }

    public class Inner {
        public void print(String str) {
            System.out.println(str);
        }
    }
}

内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。所以内部类的成员变量/方法名可以和外部类的相同。

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 布易般 于 2013-8-11 00:33 编辑

问题:创建一个包含实例内部类的类 这句话怎么理解 最好能举例说明。我尝试用我的理解来解答一下这个题目。
      1.这个题目要创建一个类。
      2.这个类要包含一个内部类。
      3.这个内部类要有实例。

//1。定义一个人体的外部类,每个人身体里边都有心脏,心脏在身体内部,所以人体为外部类,心脏为内部类。
class RenTi
{      //应楼主要求,定义一个  年龄  变量,每个人身体,有身体的年龄,心脏有心脏的年龄,有些人60岁的身体30岁的心脏,身体倍棒啊!
            int  age=60;
       //2。定义一个心脏的内部类,心脏一般不能在外部直接访问private修饰,不然的话,这个世界太疯狂了,《画皮》的小唯在世啊。

       private class XinZang
       {                   //定义内部类成员变量  心脏年龄
                    int age = 30;
              //内部类方法,这里我只是用来显示我们已经访问了内部类。

              void show()
              {
                    System.out.println("你的身体年龄是:"+RenTi.this.age);  //访问身体年龄
                        System.out.println("你的心脏年龄是:"+age);             //访问心脏年龄
                    System.out.println("我们正在通过手术,修复心脏功能");

                }
        }
        //当然,当心脏出现问题的时候,我们可以通过外部类方法【手术】来访问内部类实例对象【心脏】。
        public void shoushu()
        {
             //3。通过【内部类实例对象】访问内部类
             XinZang  xz= new XinZang();            
             xz.show();
         }
}

//写一个主函数来测试一下吧!
class TestXinZang
{
     public static void main(String[] args)
     {
           RenTi  body = new RenTi();
           //手术开始了~~~~
           body.shoushu();
      }
}
运行结果:
       你的身体年龄是:60       你的心脏年龄是:30
       我们正在通过手术,修复心脏功能


有图有真相:






评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 很给力!

查看全部评分

回复 使用道具 举报
yan 发表于 2013-8-10 22:08
成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要 ...

谢谢                             
回复 使用道具 举报
布易般 发表于 2013-8-10 23:31
问题:创建一个包含实例内部类的类 这句话怎么理解 最好能举例说明。我尝试用我的理解来解答一下这个题目。 ...

十分感谢 如果在这个题的基础上 分别在外部和内部定义一个同名同类型的变量 并在内部类中定义一个方法 实现分别打印外部类和内部类的变量 该怎么做

点评

我在上面的回复中,新增了绿色标注的部分,来响应你新提出的问题,希望对你有帮助。  发表于 2013-8-11 00:34
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马