由静态内部类继承静态内部类引发的一点总结
2011-03-09 19:50
337 查看
1. static 类的继承
这样写行不行?
回答这个问题之前,先想想什么情况下使用static关键字?
第一种:当你想让某个变量不与他所在的类的实例对象产生任何联系,无论new出多少个对象,该数据都只在内存中存储一份。
例如常量,因为你可能在别的类中引用这个变量,而你又不想new出个对象,只能使用static关键字。
第二种:当你想让某个方法不与他所在的类的实例对象产生联系的时候。
什么情况下使用内部类
当类A需要使用类B的实例对象,而且类B中还会使用到类A的变量或者方法时,就需要将类B定义成类A的内部类。如果类B不许要使用到类A的变量或者方法时,并且在其他外部类中还会频繁使用到类B的变量或者方法时,可以将类B定已成类A的静态内部类。
现在分析上述的代码:
这个static类都是GfanStore类的静态内部类
1. 为什么将这两个类定义成静态内部类
因为静态内部类不依赖于他的外部类,即时没有创建外部类的对象,我们仍旧可以创建内部类对象,当我们在其他的类中想要创建ProductInfo的实例对象的时候,如果他是简单的内部类,那么我们需要首先创建GfanStore类的实例对象(只有这样才能将这个内部类加载到内存),然后才能创建
ProductInfo的实例对象。对于简单的内部类,我们通常仅仅是在了外部类的内部使用,例如在一个View中,我需要使用Adapter,那么我就可以使用内部类来创建一个BaseAdapter的子类,在其他的view中是不许要使用这个Adapter的,这样使用内部类是很合适的,但是如果在别的类中我们需要使用这个类了,那么我们就需要将其定义成static的,这样这个static内部类就可以当作一个外部类来使用了,例如上述的两个静态内部类,我在view中需要创建他们的实例对象,我可以直接new对象,这样就很简单。
2. 静态内部类的继承
静态内部类继承静态内部类也是可以的,只是看起来有些别扭罢了
附录:
引用一片网友的文章,写的很全
http://lavasoft.blog.51cto.com/62575/179484/
还有一篇是通过内部类间接实现类的多继承
http://jiangzhengjun.javaeye.com/blog/658353
public static class ProductInfo{ public static final String P_ID = "id"; public static final String PRODUCT_TYPE = "id"; public static final String P_NAME = "id"; public static final String PRICE = "id"; public static final String PAY_CATEGORY = "id"; public static final String RATING = "id"; public static final String ICON_URL = "id"; public static final String SHORT_DESCRIPTION = "id"; public static final String APP_SIZE = "id"; public static final String SOURCE_TYPE = "id"; public static final String AUTHOR_NAME = "id"; public static final String RATINGS_COUNT = "id"; public static final String SPECIAL_FLAG = "id"; public String p_id; public String product_type; public String name; public String price; public String pay_category; public String rating; public String icon_url; public String short_description; public String app_size; public String source_type; public String author_name; public String ratings_count; public String special_flag; } public static class ProductDetailInfo extends ProductInfo{ public String packagename; public String version_code; public String comments_count; public String download_count; public String long_description; public String publish_time; public String screenshot_1; public String screenshot_2; public String screenshot_3; public String screenshot_4; public String screenshot_5; public String version_name; public String uses_permission; }
这样写行不行?
回答这个问题之前,先想想什么情况下使用static关键字?
第一种:当你想让某个变量不与他所在的类的实例对象产生任何联系,无论new出多少个对象,该数据都只在内存中存储一份。
例如常量,因为你可能在别的类中引用这个变量,而你又不想new出个对象,只能使用static关键字。
第二种:当你想让某个方法不与他所在的类的实例对象产生联系的时候。
什么情况下使用内部类
当类A需要使用类B的实例对象,而且类B中还会使用到类A的变量或者方法时,就需要将类B定义成类A的内部类。如果类B不许要使用到类A的变量或者方法时,并且在其他外部类中还会频繁使用到类B的变量或者方法时,可以将类B定已成类A的静态内部类。
现在分析上述的代码:
这个static类都是GfanStore类的静态内部类
1. 为什么将这两个类定义成静态内部类
因为静态内部类不依赖于他的外部类,即时没有创建外部类的对象,我们仍旧可以创建内部类对象,当我们在其他的类中想要创建ProductInfo的实例对象的时候,如果他是简单的内部类,那么我们需要首先创建GfanStore类的实例对象(只有这样才能将这个内部类加载到内存),然后才能创建
ProductInfo的实例对象。对于简单的内部类,我们通常仅仅是在了外部类的内部使用,例如在一个View中,我需要使用Adapter,那么我就可以使用内部类来创建一个BaseAdapter的子类,在其他的view中是不许要使用这个Adapter的,这样使用内部类是很合适的,但是如果在别的类中我们需要使用这个类了,那么我们就需要将其定义成static的,这样这个static内部类就可以当作一个外部类来使用了,例如上述的两个静态内部类,我在view中需要创建他们的实例对象,我可以直接new对象,这样就很简单。
2. 静态内部类的继承
静态内部类继承静态内部类也是可以的,只是看起来有些别扭罢了
附录:
引用一片网友的文章,写的很全
http://lavasoft.blog.51cto.com/62575/179484/
还有一篇是通过内部类间接实现类的多继承
http://jiangzhengjun.javaeye.com/blog/658353
相关文章推荐
- 由静态内部类继承静态内部类引发的一点总结
- 引发事件的一点说明和总结
- Knockout: radio选项切换引发click事件的一点总结
- C++有关继承的一点总结
- Knockout: radio选项切换引发click事件的一点总结
- 继承HibernateDaoSupport引发的错误总结,spring对hibernate的集成
- 白盒测试的一点总结
- 关于自适应布局的一点总结
- 菜鸟编程 关于函数的一点总结
- Java语言中的面向对象特性:封装、继承、多态,面向对象的基本思想(总结得不错)
- Java 编程基础 类和继承总结
- pushmail的一点总结
- 一点学习方法的总结
- 对webService 的一点总结
- 【转】Java方法继承、方法重载、方法覆盖小总结
- JAVA面向对象知识点总结(5)— 继承
- C++继承体系下类中属性的能见度总结
- 王爽汇编的一点总结
- Java中继承的一点小知识
- JavaScript 继承的方法总结