欢迎来到天天文库
浏览记录
ID:43864836
大小:84.63 KB
页数:8页
时间:2019-10-16
《内部类解析-教学课件》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java内部类种类及使用解析内部类InnerClass将相关的类组织在一起,从而降低了命名空间的混乱。一个内部类可以定义在另一个类里,可以定义在函数里,甚至可以作为一个表达式的一部分。Java中的内部类共分为四种:静态内部类staticinnerclass(alsocallednestedclass)成员内部类memberinnerclass局部内部类localinnerclass匿名内部类anonymousinnerclass静态内部类StaticInnerClass最简单的内部类形式。类定义时加上static关键字。不能和外部类有相同
2、的名字。被编译成一个完全独立的.class文件,名称为OuterClass$InnerClass.class的形式。只可以访问外部类的静态成员和静态方法,包括了私有的静态成员和方法。生成静态内部类对象的方式为:OuterClass.InnerClassinner=newOuterClass.Innei、Class();静态内部类使用代码:packagecom.learnjava.innerclass;classStaticlnnerprivatestaticinta=4;//静态内部类publicstaticclassInnet{publ
3、icvoidtest(){//静态内部类可以访问外部类的静态成员//并J4它只能访问静态的System,out.printin(a);}}}publicclassStaticInncrClassTcst{publicstaticvoidm8in(String[]args){StaticIrincr.Innerinner=newStaticInncr.Inncr();inner・test();成员内部类MemberInnerClass成员内部类也是定义在另一个类屮,但是定义时不用static修饰。成员内部类和静态内部类可以类比为非静态的成员
4、变量和静态的成员变量。成员内部类就像一个实例变量。它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。在外部类里面创建成员内部类的实例:this.newInnerclassO;在外部类之外创建内部类的实例:(newOuterclassO).newInnerclass();在内部类里访问外部类的成员:Outerclass.this,member详情见代码例子:packagecom.learnjava.innerclass;classMemberInnet{privatcintd二1;privateinta=2;//定义
5、一个成员内部类publicclassTrmer2iprivateinta=8;publicvoiddoSomething(){//直接访问外部类对彖System,out.println(d);System,out.printin(a);//直接访问a,则访问的是内部类里的a//如何访问到外部类里的a呢?Systcm.out.printin(Mcmbcrlrmcr.this,a);publicclassMemberInnerClassTestpublicstaticvoidmain(String[]args)//创建成员内部类的对彖//需要
6、先创建外部类的实例Memberlnner.Inner2inner二newMemberlnner().newInner2();irrner.doSomething();局部内部类LocalInnerClass局部内部类定义在方法中,比方法的范围还小。是内部类中最少用到的一种类型。像局部变量一样,不能被public,protected,private和static修饰。只能访问方法中定义的final类型的局部变量。局部内部类在方法中定义,所以只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法。packagecom.learn
7、java・inncrclass;classLocallnner{inta=1;publicvoiddoSomething(){intb二2;finalintc=3;//定义一个局部内部类classInner3publicvoidtest(){System,out.println("HelloWorld");Systcm.out.println(ei);//不可以访问非final的局部变量//error:Cannotrefertoanon-finalvariablebinsideaninner//classdefinedinadiffere
8、ntmethod//System,out.println(b);//可以访问final变量System,out.println(c);//创建局部内部类的实例并调用方法newTrmer3().
此文档下载收益归作者所有