您的位置:首页 > 其它

内部类访问外部同名属性或者方法

2014-03-13 21:40 351 查看
如果内部类中没有与外部类同名的属性或方法,那么直接引用外部类的属性或方法即可,见Inner类的定义。
但如果存在同名的属性或方法,就要在内部类中先取得外部类的引用,通过这个引用来访问外部类的同名属性或方法。有两个方法来取得外部类的引用:
一种方法是,通过外部类的类名来取得外部类当前的引用,见Inner1类的定义;
另一种方法是,把外部类的引用显式传给内部类的构造方法,见Inner2类的定义。
可见,第一种方法简单一些。
注意:[类名.this]的用法只能在内部类中使用。
public class Test1 {

private int a = 5;

public Test1() {

new Inner().print();
new Inner1().print();
new Inner2(this).print();

}

public static void main(String[] args) {

new Test1();
}

private class Inner {

private void print() {

System.out.println("Inner直接取得外部的属性a=" + a);
System.out.println();

}

}

private class Inner1 {

private int a = 10;

private void print() {

System.out.println("Inner1的属性a=" + this.a);
System.out.println("Inner1通过第一种方法取得外部的属性a=" + Test1.this.a);
System.out.println();

}

}

private class Inner2 {

private int a = 20;

private Test1 t;

private Inner2(Test1 t) {
this.t = t;
}

private void print() {

System.out.println("Inner2的属性a=" + this.a);
System.out.println("Inner2通过第二种方法取得外部的属性a=" + this.t.a);
System.out.println();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐