java 中内部类的实例详解
java中内部类的实例详解
一:内部类可直接访问外部类的成员变量,包括外部类私有的成员变量
二:外部类要访问内部类的成员变量,需要建立内部类的对象
classOuter{ intx=110; publicvoidshow(){ System.out.println("外部类的x="+x); } publicvoidshowInner(){ Innerinner=newInner(); inner.show(); System.out.println(inner.x); } classInner{//内部类 intx=220; publicvoidshow(){ System.out.println("内部类的x="+x); } } } publicclassOuterDemo{ publicstaticvoidmain(String[]args){ Outerouter=newOuter(); outer.show(); outer.showInner(); Outer.InnerouterInner=newOuter().newInner();//特殊情况.外部类直接访问内部类成员变量 outerInner.show(); } }
内部类之所以可以直接访问外部类的成员变量,是因为内部类持有外部类的引用。格式:外部类名.this
如:System.out.println("x="+Outer.this.x);//访问外部类的x
classOuter{ intx=110; classInner{ intx=220; publicvoidshow(){ intx=330; System.out.println("x="+x);//访问show()中的x System.out.println("x="+this.x);//访问内部类的x System.out.println("x="+Outer.this.x);//访问外部类的x } } voidshowInner(){ Innerinner=newInner(); inner.show(); } } publicclassOuterDemo{ publicstaticvoidmain(String[]args){ Outerouter=newOuter(); outer.showInner(); } }
在内部类(一)和内部类(二)中,内部类都是作为全局变量出现的即定义在了类里 ,在此奖内部类定义为局部变量,即定义在方法里.尤其注意:此时内部类要想访问局部变量,那么此 局部变量必须是被final修饰的,如此处的y
packagecn.com; classOuter{ intx=110; publicvoidshow(){ finalinty=99; classInner{//内部类 intx=880; publicvoidshowInner(){ System.out.println("局部变量y="+y); } } newInner().showInner(); } } publicclassOuterDemo{ publicstaticvoidmain(String[]args){ Outerouter=newOuter(); outer.show(); } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!