黑马程序员技术交流社区
标题:
关于内部类访问外部类同名变量问题
[打印本页]
作者:
张承富
时间:
2013-6-13 16:39
标题:
关于内部类访问外部类同名变量问题
本帖最后由 张承富 于 2013-6-13 18:08 编辑
外部类有一个 String str
内部类也有一个String str
试了一下,在内部类中定义访问外部类变量的属性 str
用 Out.this.str可以 用new Out().str 也可以
问两者之间的区别,还是一样的?
作者:
Super_Class
时间:
2013-6-13 16:40
内置类中很重要的访问位置:(很重要)
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();
}
}
作者:
薛淑凯
时间:
2013-6-13 17:03
本帖最后由 薛淑凯 于 2013-6-13 17:19 编辑
惊讶于版主的回复速度。。。前者直接调用外部类的变量,后者是先创建外部类对象然后访问其变量
作者:
张承富
时间:
2013-6-13 17:19
版主的回答 好像不是我想要得答案
作者:
704050a
时间:
2013-6-13 17:45
Out.this.str:表示不需要创建外部类的引用对象,直接访问其成员变量;
new Out().str :表示先创建外部类对象,再访问它的成员变量。
作者:
′х.|鰉❤耔
时间:
2013-6-13 18:00
内部类可以直接的访问外部类的成员变量
如果你要先在内部类里面new一个外部类的实例对象的话这样可能会程序在内存中就多存在了一个外部类的实例对象了,这样的做法就会消耗内存了,因为内存是很宝贵的所以建议直接调用外部类的成员变量而不是去实例外部类再调用成员变量
作者:
孙百鑫
时间:
2013-6-13 18:03
package day01;
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Outer().function();//创建匿名对象,因为调用一次实验
}
}
class Outer{
private String outer="outer";
class Inter{//建立内部类
private String inter="inter";
void show(){
System.out.println(new Outer().outer);//这个呢.就相当于在内部类中建立外部类的方法而
//调用它的String outer的方法,就和在主函数中建立它的的对象.调用他的方法是一样的
System.out.println(Outer.this.outer);//这句话内部类可以访问外部类你应该懂吧.视频已经将的很清楚的了
}
}
void function(){//提供方法.给内部类初始化
new Inter().show();
}
}
复制代码
作者:
孙百鑫
时间:
2013-6-13 18:06
楼主您好.如果问题已经解决的话.请将问题改成已解决.
谢谢你的配合{:soso_e100:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2