为什么需要内部类,内部类的作用
2014-11-13 12:52
211 查看
可以将一个类的定义放在另一个类的定义内部,这就是内部类。内部类是一钟非常有用的特性,因为它允许程序员把一些逻辑相关的类组织在一起,并控制内部类的可视性。
在最初,内部类看起来就像是一种内部隐藏机制:将类置于其他类的内部。但是,内部类远不止如此,它了解外围类,并能与之通信,而且你用内部类写出的代码优雅而清晰。
内部类的代码操作创建它的外围类的对象,所以可以认为内部类提供了某种进入外围类的窗口。一般来说,内部类继承某个类或者实现某个接口。每个内部类都能独立地继承一个接口的实现,所以无论外围类是否已经继承了某个接口的实现,对于内部类都是没有影响的。
考虑这样一种情形:必须在一个类中以某种方式实现两个接口。由于接口的灵活性,你有两种选择:使用单一类,或者实现内部类。
两个接口为:
interface A{}
interface B{}
我们可以选择单一类:
class X implements A, B(){}
或者内部类:
class Y implements A(){
B makeB(){
return new B() {};
}
}
然而,如果拥有的是抽象类或者是具体的类,而不是接口呢?我们知道,类只能继承一个类,这个时候就只能使用内部类才能实现多重继承了。
class A {}
abstract B {}
class C extends A{
B makeB() {
return new B() { };
}
}
public class E{
static void takesA( A a){ }
static void takesB(B b){ }
public static void main(String [] args ){
C c = new C();
takesA(c);
takesB(c,makeB);
}
}
也就是说,内部类实现了“多重继承”,内部类允许继承多个非接口类型(类或者抽象类)。
相关文章推荐
- 为什么需要内部类
- java内部类有什么好处?为什么需要内部类?
- 为什么内部类访问的外部变量需要使用final修饰
- jdk1.5为什么需要使用@Override标记,其作用是什么
- 为什么需要内部类?
- 局部内部类访问外部变量为什么需要使用final修饰
- 为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?
- Bootloader的作用、为什么需要Bootloader?
- 为什么需要内部类?
- 为什么内部类访问的外部变量需要使用final修饰
- java中为什么需要内部类?
- 为什么需要maven及其作用及其生命周期与入门的构建方法
- Java之内部类(1) - 为什么需要内部类
- 为什么从内部类中访问局部变量需要被声明为最终类型
- 内部类的作用,为什么要使用内部类
- 从头认识java-8.11 为什么需要内部类?
- 【Thinking in Java笔记】为什么需要内部类
- 端口号的作用,及为什么需要端口号
- 《Java编程思想》之为什么需要内部类?
- 《Java编程思想》之为什么需要内部类?