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();
}
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!