java嵌套类(Nested Classes)总结

java嵌套类(Nested Classes)总结

ID:37858313

大小:231.00 KB

页数:14页

时间:2019-06-01

java嵌套类(Nested Classes)总结_第1页
java嵌套类(Nested Classes)总结_第2页
java嵌套类(Nested Classes)总结_第3页
java嵌套类(Nested Classes)总结_第4页
java嵌套类(Nested Classes)总结_第5页
资源描述:

《java嵌套类(Nested Classes)总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、java嵌套类(NestedClasses)总结NestedClasses定义在java语言规范里面,嵌套类(NestedClasses)定义是:Anestedclassisanyclasswhosedeclarationoccurswithinthebodyofanotherclassorinterface.Atoplevelclassisaclassthatisnotanestedclass. 说的简单一点,就是定义在类里面的类。一般把定义内部类的外围类成为包装类(enclosingclass)或者外部类 嵌套类分类根据nestedclass定义的地方,可

2、以分为membernestedclass,localnestedclass, anonymousnestedclassmembernestedclass(成员嵌套类):成员嵌套类作为 enclosingclass的成员定义的,成员嵌套类有enclosingclass属性localnestedclass(局部嵌套类):局部嵌套类定义在 enclosingclass的方法里面,局部嵌套类有enclosingclass属性和enclosingmethod属性anonymousnestedclass(匿名嵌套类):匿名嵌套类没有显示的定义一个类,直接通过new的方法创

3、建类的实例。一般回调模式情况下使用的比较多 membernestedclass 可以使用public,private,protected访问控制符,也可以用static,final关键字localnestedclass可以使用final关键字anonymousnestedclass不使用任何关键字和访问控制符见下面的代码public class EnclosingClass{     public static final class NestedMemberClass{     }     public void nestedLocalClass(){   

4、      final class NestedLocalClass{         }    }     public void nestedAnonymousClass(){         new Runnable(){             @Override            public void run(){            }        };    }} 在大多数情况下,一般把nestedclasses分为两种:StaticNestedClasses(静态嵌套类):就是用static修饰的成员嵌套类InnerClass:静态嵌

5、套类之外所有的嵌套类的总称,也就是没有用static定义的nestedclasses,InnerClasses不能定义为static,不能有static方法和static初始化语句块。在JLS(java语言规范)里面是这么定义的:Aninnerclassisanestedclassthatisnotexplicitlyorimplicitlydeclaredstatic.Innerclassesmaynotdeclarestaticinitializers(§8.7)ormemberinter-faces  其中InnerClass又可以分为三种:1inner

6、memberclasses:没有用static修饰的成员内部类2localinnerclasses:定义在方法里面的内部类,方法可以是static的也可以是非static的,也可以是构造器方法。3 anonymousinnerclasses:定义在方法里面匿名类,方法可以是static的也可以是非static的嵌套类访问规则StaticNestedClasses以及innerclasses有一些限制规则,下面介绍一下这些规则。·StaticNestedClasses访问规则用Static修饰的NestedClasses,只能访问外部类的非static变量。对于

7、public的static NestedClasses可以用new外部类.内部类()的方式直接创建。而默认的staticNestedClasses可以在同一包名下,用new外部类.内部类()的方式创建。其实和外部类的方式差不多。静态成员类可以使用访问控制符,可以使用static修饰,可以是abstract抽象类 public class StaticNestedClass{     //私有局部    private int i=0;     //静态    public static int j=0;     //不变值    private final i

8、nt k=0;     //stati

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

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

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