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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张承富 中级黑马   /  2013-6-13 16:39  /  1790 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张承富 于 2013-6-13 18:08 编辑

外部类有一个 String str
内部类也有一个String str
试了一下,在内部类中定义访问外部类变量的属性 str
用 Out.this.str可以  用new Out().str 也可以
问两者之间的区别,还是一样的?

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 淡定

查看全部评分

7 个回复

倒序浏览
内置类中很重要的访问位置:(很重要)
                                class Outer{
                                        private int num = 3;        //访问这里用 Outer.this.num;
                                        class Inner{//这里内置类可以访问外部类的成员(方法和属性)
                                                int num = 4;        //访问这里用 this.num;   也可以用Inner.this.num;
                                                void show(){
                                                        int num = 5; //访问这里用 num;
                                                        System.out.println("show run "+Outer.this.num);
                                                }
                                        }
                                       
                                        void method(){
                                                new Inner().show();
                                        }
                                }

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 薛淑凯 于 2013-6-13 17:19 编辑

惊讶于版主的回复速度。。。前者直接调用外部类的变量,后者是先创建外部类对象然后访问其变量
回复 使用道具 举报
版主的回答 好像不是我想要得答案
回复 使用道具 举报
Out.this.str:表示不需要创建外部类的引用对象,直接访问其成员变量;
new Out().str :表示先创建外部类对象,再访问它的成员变量。

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
内部类可以直接的访问外部类的成员变量
如果你要先在内部类里面new一个外部类的实例对象的话这样可能会程序在内存中就多存在了一个外部类的实例对象了,这样的做法就会消耗内存了,因为内存是很宝贵的所以建议直接调用外部类的成员变量而不是去实例外部类再调用成员变量

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. package day01;

  2. public class Test2 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 new Outer().function();//创建匿名对象,因为调用一次实验
  9.         }

  10. }
  11. class Outer{
  12.         private String outer="outer";
  13.                 class Inter{//建立内部类
  14.                 private String inter="inter";
  15.                 void show(){
  16.                         System.out.println(new Outer().outer);//这个呢.就相当于在内部类中建立外部类的方法而
  17.                                                                              //调用它的String outer的方法,就和在主函数中建立它的的对象.调用他的方法是一样的
  18.                         System.out.println(Outer.this.outer);//这句话内部类可以访问外部类你应该懂吧.视频已经将的很清楚的了
  19.                 }
  20.         }
  21.         void function(){//提供方法.给内部类初始化
  22.                 new Inter().show();
  23.         }
  24. }
复制代码
回复 使用道具 举报 1 0
楼主您好.如果问题已经解决的话.请将问题改成已解决.
谢谢你的配合{:soso_e100:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马