java - 内部类(inner class)详解

java - 内部类(inner class)详解

ID:11034029

大小:74.50 KB

页数:7页

时间:2018-07-09

java - 内部类(inner class)详解_第1页
java - 内部类(inner class)详解_第2页
java - 内部类(inner class)详解_第3页
java - 内部类(inner class)详解_第4页
java - 内部类(inner class)详解_第5页
资源描述:

《java - 内部类(inner class)详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java内部类(InnerClass)详解简单的说,内部(inner)类指那些类定义代码被置于其它类定义中的类;而对于一般的、类定义代码不嵌套在其它类定义中的类,称为顶层(top-level)类。对于一个内部类,包含其定义代码的类称为它的外部(outer)类。1Staticmemberclass(静态成员类)类声明中包含“static”关键字的内部类。如以下示例代码,Inner1/Inner2/Inner3/Inner4就是Outer的四个静态成员类。静态成员类的使用方式与一般顶层类的使用方式基本相同。publiccl

2、assOuter{//justlikestaticmethod,staticmemberclasshaspublic/private/defaultaccessprivilegelevels//accessprivilegelevel:publicpublicstaticclassInner1{publicInner1(){//StaticmemberinnerclasscanaccessstaticmethodofouterclassstaticMethod();//Compileerror:staticmember

3、innerclasscannotaccessinstancemethodofouterclass//instanceMethod();}}//accessprivilegelevel:defaultstaticclassInner2{}//accessprivilegelevel:privateprivatestaticclassInner3{//defineanestedinnerclassinanotherinnerclasspublicstaticclassInner4{}}privatestaticvoidst

4、aticMethod(){//cannotdefineaninnerclassinamethod/*publicstaticclassInner4(){}*/}privatevoidinstanceMethod(){//privatestaticmemberclasscanbeaccessedonlyinitsouterclassdefinitionscopeInner3inner3=newInner3();//howtousenestedinnerclassInner3.Inner4inner4=newInner3.

5、Inner4();}}classTest{Outer.Inner1inner1=newOuter.Inner1();//TestandOuterareinthesamepackage,soInner2canbeaccessedhereOuter.Inner2inner2=newOuter.Inner2();//Compileerror:Inner3cannotbeaccessedhere//Outer.Inner3inner3=newOuter.Inner3();}1.1静态成员类特性静态成员类可访问外部类的任一静态字

6、段或静态方法像静态方法或静态字段一样,静态成员类有public/private/default权限修饰符1.2静态成员类约束静态成员类不能与外部类重名像外部类的静态方法一样,不能直接访问外部类的实例字段和实例方法静态成员类只能定义于外部类的顶层代码或外部类其它静态成员类的顶层代码中(嵌套定义);不能定义于外部类的某个函数中。1.3新增语法如示例代码所示,可以以“OuterClass.InnerClass”的方式来引用某个内部类。1.4什么时候使用静态成员类B为A的辅助类,且只为A所用时,可将B定义为A的静态成员类。例如

7、JDK中的LinkedList类就有Entry静态成员类:publicclassLinkedListextendsAbstractSequentialList…;privatestaticclassEntry{Eelement;Entrynext;Entryprevious;Entry(Eelement,Entrynext,Entryprevious){this.element=element;this.next=next;this.previous=previous;}}…;

8、}显然,Entry用来表示LinkedList中的一个结点,只被LinkedList自身使用。2Memberclass(成员类)一个静态成员类,若去掉“static”关键字,就成为成员类。如下示例代码,Inner1/Inner2/Inner3/Inner4就是Outer的四个成员类publicclassOuter{//justli

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。