1.为什么我们需要内部类的存在?这是因为,在java的设计规范中,出于面向对象的逻辑清晰得角度考虑,java的设计者禁止了西加加中常见的多重继承的现象,限制java类只能继承一个父类。为了弥补多重继承被禁止带来的影响,java提出了接口的概念,但是,内部类的提出则进一步完善了这个方案。这是因为,按照java编程思想中的原话来说,内部类最吸引人的地方在于,每个内部类都能独立的继承自一个实现,所以无论外围类是否已经继承了某个实现,对于内部类都没有影响。
举个例子,
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。)
分享到:
相关推荐
2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 ...
读书笔记-Java并发编程实战-基础篇
JAVA学习经典笔记-----1JAVA学习经典笔记-----1JAVA学习经典笔记-----1JAVA学习经典笔记-----1JAVA学习经典笔记-----1
Java笔记---李兴华---Java笔记---李兴华-----Java笔记---李兴华--Java笔记---李兴华
java编程思想笔记,建议与书本结合使用。。。。。。。。。。。
java核心编程笔记-持续更新
Java基础每日复习笔记-JavaSE高级阶段.2020-10-13-211312.edf
《java编程思想》学习笔记
---Java笔记---
Java是一种面相对象的编程语言。计算机语言分成两种,第一种是面向机器结构的语言,构建数据模型是基于机器的结构。第二种是面向待解决问题结构的语言,构建数据模型是基于问题的结构。Java提供了更丰富的工具来描述...
java笔记-------------java笔记-------------java笔记-------------
Java基础每日复习笔记-JavaSE基础阶段.edf
JAVA新手入门笔记-编程基础知识
java基础全套笔记--yyds
java编程思想读书笔记,114页,压缩文件才39K。
Java编程思想重点笔记(Java开发必看)
Java编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZF
自己收集的java编程笔记,关于集合类的知识,很有用