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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© itheima01 中级黑马   /  2013-5-24 17:41  /  2047 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 itheima01 于 2013-5-26 01:16 编辑

class A {
    int i  = 10;
    class B {
        int i = 20;
        out(A.this.i);
        out(this.i)
    }
}
A.this代表 A类的对象引用????

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 薛淑凯 于 2013-5-24 18:03 编辑

内部类里A.this代表A对象本身,也就是调用的外部的i,直接调用i隐式省略了this,代表内部类本身

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 山鹰 于 2013-5-24 18:18 编辑

LZ 这段代码ClassB是一个内部类  应该 (newB().i) 对象调用类名直接调用必须是静态变量
正确代码
class A{
        public static void main(String [] args)
{
     int i  = 10;
     class B {
         int i = 20;      
         
     }
         System.out.println(new B().i);//这个输出内部类B中的i

         System.out.println(i);//输出A类中的i
}

}

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
首先,内部类可以通过类名调用外部类的成员,也就是你示例中的A.this.i
内部类调用自己的成员也就是this.i了。
这里主要就是涉及一个内部类调用外部类成员的方法。

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
楼主这是哪来的代码?代码有问题吧!我补全了也是有问题的!
回复 使用道具 举报
内部类可以直接访问外部类中的成员。因为内部类持有了外部类的引用。  外部类名.this
回复 使用道具 举报
楼主可以贴出完整程序么?
回复 使用道具 举报
神之梦 发表于 2013-5-25 01:23
楼主可以贴出完整程序么?

public class Test {
        int i = 10;
        class Test1 {
                int i = 20;
                public void run() {
                        System.out.println(Test.this.i);
                        System.out.println(this.i);
                }
        }
        public static void main(String[] args) {
                Test.Test1 tt = new Test().new Test1();
                tt.run();
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马