java编程思想笔记--内部类部分七
2013-08-04 20:49
746 查看
1.为什么我们需要内部类的存在?这是因为,在java的设计规范中,出于面向对象的逻辑清晰得角度考虑,java的设计者禁止了西加加中常见的多重继承的现象,限制java类只能继承一个父类。为了弥补多重继承被禁止带来的影响,java提出了接口的概念,但是,内部类的提出则进一步完善了这个方案。这是因为,按照java编程思想中的原话来说,内部类最吸引人的地方在于,每个内部类都能独立的继承自一个实现,所以无论外围类是否已经继承了某个实现,对于内部类都没有影响。
举个例子,
如上,如果拥有的是抽象的类或者具体的类,而不是接口,那就只能使用内部类才能实现多重继承。(lz在这里插一句话,考研复试的时候,还装逼给老师说,java中出于安全性考虑,不允许多重继承,真是too simple,too naive。)
举个例子,
package test; interface p204_A{} interface p204_B{} class X implements p204_A,p204_B{} class Y implements p204_A{ p204_B makeB(){ return new p204_B(){ }; } } public class p204 { static void takesA(p204_A a){} static void takesB(p204_B b){} public static void main(String args[]){ X x=new X(); Y y=new Y(); takesA(x); takesA(y); takesB(x); takesB(y.makeB()); } }如果单纯的看,其实X和Y两种实现接口的方式都很正确。但是,在一些其他情行下,内部类可以做到接口同学儿做不到的。例如如下:
package test; class D{} abstract class E{} class Z extends D{ E getE(){ return new E(){}; } } public class p204 { static void takesD(D d){} static void takesE(E e){} public static void main(String args[]){ Z z=new Z(); takesD(z); takesE(z.getE()); } }
如上,如果拥有的是抽象的类或者具体的类,而不是接口,那就只能使用内部类才能实现多重继承。(lz在这里插一句话,考研复试的时候,还装逼给老师说,java中出于安全性考虑,不允许多重继承,真是too simple,too naive。)
相关文章推荐
- java编程思想笔记--内部类部分三
- java编程思想笔记--内部类部分四
- java编程思想笔记--内部类部分二
- java编程思想笔记--内部类部分六
- 【笔记】Java编程思想—一接口与内部类
- java编程思想笔记--多态部分二
- java编程思想笔记--持有对象部分一
- java编程思想笔记--多态部分五
- java编程思想笔记--持有对象部分三
- java编程思想笔记10-内部类
- Java编程思想笔记——第十章 内部类
- 【Java编程思想笔记】第十章-内部类
- java编程思想笔记--字符串部分一
- java编程思想笔记--多态部分四
- Java编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
- java编程思想笔记--多态部分一
- java编程思想笔记--字符串部分二
- Java编程思想学习笔记1 - 内部类
- java编程思想笔记--接口部分一
- Java编程思想---第一章笔记