对于Java静态内部类的理解
2012-12-21 11:34
337 查看
之前一直在微软.Net平台下开发,在C#中是不能实例化的,而且它的所有成员都要是静态的。我们一般把静态类用作工具类,不需要实例化,直接使用它的属性与方法,整个域中静态类是唯一的。
开始用Java后发现Java的静态类一般使用在某个类的内容,简称静态内部类。而且这种类可以像非静态类一样包含各种非静态成员,同时可以实例化。直接颠覆了我对静态类的认知。
下面我对Java的静态内部类和非静态内部类进行对比:
总结:
通过代码我们发现,非静态内部类是附属在外部类对象上的,需要先实例化一个外部类的对象,通过外部类对象才能实例化非静态内部类;而静态内部类可以看做是直接附属在外部类上的,这个静态代表附属体是外部类,而不是外部类实例;外部类在进程中是唯一的,而静态内部类不需要唯一,可以生成多个实例。
开始用Java后发现Java的静态类一般使用在某个类的内容,简称静态内部类。而且这种类可以像非静态类一样包含各种非静态成员,同时可以实例化。直接颠覆了我对静态类的认知。
下面我对Java的静态内部类和非静态内部类进行对比:
public class outClass { public static class innerClass{ public innerClass(){ System.out.println("innerClass"); } } public static void main(String[] args) { //outClass a = new outClass(); innerClass b = new innerClass(); innerClass c = new innerClass(); } }
public class outClass { public class innerClass{ public innerClass(){ System.out.println("innerClass"); } } public static void main(String[] args) { outClass a = new outClass(); innerClass b = a.new innerClass(); innerClass c = a.new innerClass(); } }
总结:
通过代码我们发现,非静态内部类是附属在外部类对象上的,需要先实例化一个外部类的对象,通过外部类对象才能实例化非静态内部类;而静态内部类可以看做是直接附属在外部类上的,这个静态代表附属体是外部类,而不是外部类实例;外部类在进程中是唯一的,而静态内部类不需要唯一,可以生成多个实例。
相关文章推荐
- Java对于静态的理解
- java 静态内部类不可以继承非静态内部类理解
- 黑马程序员——对于java语言的理解
- 对于as3 falsh 和 android java的一点理解
- 自己 对于Java 的理解
- 关于“java中静态内部类的设计意图”的理解
- Java中对于Interface的总结与理解
- Java关于个人对于Socket的理解,Socket多线程批量上传文件,适合新手
- Java:对于Borderlayout布局管理的理解
- Java中对于String StringBuffer StringBuilder的理解
- 对于java跨平台的理解
- Java中对于回调函数的简单理解
- 对于java中接口的理解
- java中对于面向对象的理解
- 对于java:comp/env/jdbc的理解
- 对于java中访问权限的理解与解析
- 新人对于java异常的理解
- 对于JAVA多线程卖票小程序的理解
- 对于JAVA处理异常的理解
- 对于java动态代理模式的深入理解