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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


/**
*  定义一个包含私有成员变量和函数的类,再定义一个内部类,在内部类函数中访问外部成员变量,
* 并调用外部函数。在外部类函数中创建内部类对象,调用内部类函数。
*(在内部类函数中访问外部成员变量,并调用外部函数?)这句话中“并调用外部函数?”是怎么理解的呢?大神求指点,而我下面的程序是新定义了个*method2()实现的。这个好像不满足要求。
*/
class OuterClass
{
        private int num = 5445;//定义一个私有的成员变量。
        void method()
        {
                System.out.println("method");
                InnerClass in = new InnerClass();//在外部类函数中创建内部类对象
                in.function();//调用内部类函数。
        }
        void method2()
        {
                System.out.println("method2");               
        }
                 class InnerClass
                 {
                        void function()
                        {                       
                                method2();
                                System.out.println(OuterClass.this.num);//内部类访问外部成员变量。
                        }               
                  }                  
}

public class Test6
{
       
        public static void main(String[] args)
        {
                OuterClass out = new OuterClass();//创建一个外部类对象
                out.method();//调用外部类方法
        }
}
       


评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

3 个回复

倒序浏览
速度来个大神啊:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(
回复 使用道具 举报
本帖最后由 ζ_____________ 于 2014-9-27 16:11 编辑

我将代码这样修改一下你看下能看懂吗?


class OuterClass
{
        private int num = 5445;    //OuterClass中的成员变量 num;

        void method()        //OuterClass中的成员函数 method();
        {
                System.out.println("Method2");
        }
        class InnerClass       //OuterClass中的(成员类)内部类InnerClass;
        {
                void function()     //InnerClass中的成员函数 function();
                {
                        method();     //InnerClass中的成员函数中所调用的外部类OuterClass中的成员函数method(),默认在InnerClass中都持有"外部类.this".这就是所谓的在内部类中调用外部成员.其实也可以写成这样.  
       //OuterClass.this.method();


                        System.out.println(OuterClass.this.num);     //内部类访问外部成员变量.和上面相同都是持有着  "外部类.this";
                }
        }
}

public class Test6
{
        public static void main(String[] args)
        {
                OuterClass.InnerClass in = new OuterClass().new InnerClass();   //你的例子中是在外部类中直接拿到的内部类中的InnerClass的指向,但是在其他类中 必须要创建  外部类的对象再创建内部类的对象才能拿到内部类中的引用.  (内部类为静态的话除外)
                in.function();    //调用内部类中的function()函数.
        }
}



  1. class OuterClass
  2. {
  3.     private int num = 5445;//定义一个私有的成员变量

  4.     void method()
  5.     {
  6.         System.out.println("Method2");
  7.     }
  8.     class InnerClass
  9.     {
  10.         void function()
  11.         {
  12.             OuterClass.this.method();
  13.             System.out.println(OuterClass.this.num);//内部类访问外部成员变量.
  14.         }
  15.      }
  16. }

  17. public class Test6
  18. {
  19.     public static void main(String[] args)
  20.     {
  21.         OuterClass.InnerClass in = new OuterClass().new InnerClass();
  22.         in.function();
  23.     }
  24. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

回复 使用道具 举报
ζ_____________ 发表于 2014-9-27 15:53
我将代码这样修改一下你看下能看懂吗?

:victory:谢谢你,我继续看看:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马