为什么需要内部类,内部类的作用

可以将一个类的定义放在另一个类的定义内部,这就是内部类。内部类是一钟非常有用的特性,因为它允许程序员把一些逻辑相关的类组织在一起,并控制内部类的可视性。

在最初,内部类看起来就像是一种内部隐藏机制:将类置于其他类的内部。但是,内部类远不止如此,它了解外围类,并能与之通信,而且你用内部类写出的代码优雅而清晰。

内部类的代码操作创建它的外围类的对象,所以可以认为内部类提供了某种进入外围类的窗口。一般来说,内部类继承某个类或者实现某个接口。每个内部类都能独立地继承一个接口的实现,所以无论外围类是否已经继承了某个接口的实现,对于内部类都是没有影响的。

考虑这样一种情形:必须在一个类中以某种方式实现两个接口。由于接口的灵活性,你有两种选择:使用单一类,或者实现内部类。

两个接口为:

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);

}

}

也就是说,内部类实现了“多重继承”,内部类允许继承多个非接口类型(类或者抽象类)。



    原文作者:chengshuyuan_uestc
    原文地址: https://blog.csdn.net/chengshuyuan_uestc/article/details/41077125
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞