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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高志鹏 中级黑马   /  2012-12-5 14:55  /  1795 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  ClassDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Outer1.Inner OI = new Outer1().new Inner();
  6.                 OI.show();
  7.         }
  8. }
  9. abstract class AbsDemo
  10. {
  11.         abstract void show();
  12. }
  13. class Outer1
  14. {
  15.         class Inner extends AbsDemo
  16.         {
  17.                 int x=9;//<font color="#ff0000">就是此处的x在下面的show方法中是不能调用的。</font>
  18.                 void show(){
  19.                         System.out.println("show:"+x);
  20.         }
  21. }
  22. }
复制代码
是老毕视频的第九天的04匿名内部类的视频中,35分钟的时候,老毕说这样的x是调用不了的,但是我却能调用,请问此处的x到底能不能调用,麻烦各位讲的详细点。

疑问.png (21.11 KB, 下载次数: 32)

疑问.png

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
在这是能调用的。在外部类里不能直接调用。
回复 使用道具 举报
为什么不能调用,他就是内部类里面的一个变量,能调用,你可能理解错了吧,建议你再看一遍
回复 使用道具 举报
坚持远方 发表于 2012-12-5 15:41
为什么不能调用,他就是内部类里面的一个变量,能调用,你可能理解错了吧,建议你再看一遍 ...

我看了几遍了,老毕就是说的不能啊。
回复 使用道具 举报
你是没听清楚吧,内部类的成员变量怎么会不能调用呢? 你是听错了,在认真的听一下
回复 使用道具 举报
李培根 来自手机 金牌黑马 2012-12-5 19:39:55
地板
内部可以调用外部,外部不可以调用内部
回复 使用道具 举报
王阳 中级黑马 2012-12-5 20:03:05
7#
class ClassDemo

{

        public static void main(String[] args)

        {

                Outer1.Inner OI = new Outer1().new Inner();

                OI.show();

        }

}

abstract class AbsDemo

{

        abstract void show();

}

class Outer1

{
        void show() {
                final int y = 0;
                class Inner extends AbsDemo

                {

                        void show() {

                                System.out.println("show:" + y);

                        }
                }

        }

}
我估计你是想问这个吧。。。这样是不能调用的,需要加final,因为外部类的方法的生命周期比内部类的短,所以需要加上final修饰符

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
内部类的的变量内部类是可以调用  内部类可以直接访问外部类的成员,因为持有外部类中的引用。
但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。
例如:class  Demo
{
        public static void main(String[] args)
        {
                Out n =new Out();
                n.printOut();
                n.show();
        }
}
class Out
{
        int a = 1;
        class In
        {
                int a=2;
                public void print()
                {
                        int a=3;
            System.out.println(a);//打印3
                        System.out.println(this.a);// 打印2
            System.out.println(Out.this.a);//打印1
                }
        }
        void show()
        {
                final int x = 1;// 注意此处不加final修饰,编译失败,毕老师讲的应该是这种情况,你练习时是将x定义在了内部类之中,这样是可以访问的。
                class In1
                {
                        void print()
                        {
                                System.out.println(x);
                        }
                }
                new In1().print();
        }
        void printOut()
        {
                In n = new In();
                n.print();
               
        }
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

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