内部类

来源:互联网 发布:vue.js 绑定日期格式 编辑:程序博客网 时间:2024/06/06 06:59

定义:

内部类 就是在类的内部嵌套定义一个类

使用内部类可以节省编译后产生的字节码 即.class文件的大小

实现事件监听器的时候,比方说actionListener 。。。采用内部类很容易实现

 

编写事件驱动时,内部类和内部类的对象可以访问外部类的成员方法和变量,注意包括私有成员。

但 使用内部类的最大问题 会使结构不清晰, 所以在 工程上 不会刻意使用内部类

 

内部类和匿名类有一个特点 就是他们能访问外围类的所有成员 包括私有的

所以你可以使用内部类给外部提供一些访问外围类私有成员的功能接口

 

什么情况下使用:

说的通俗一点,当你发现你在写一个类的时候,必须要用到另一个自己定义的类

而恰好这个类只需要被你当前的类用到

你不想让它被别的类用或者别的类永远或者基本上没什么可能被来调用它

而且恰好这个类比较简单,占据的代码行也不多

那么考虑是否可以以内部类的形式去实现它吧^_^

 

线程/事件是通常是最容易用到内部类的

线程:需要安全机制,代码一般不会很长

事件:重用性差,只需要实现部分接口以至于代码比较短

 

因为内部类在外部是不能实例化的这就避免了误用的可能。

 

 

public class Outer {    public class Inner{             }    void f(){        new Inner();//此处为什么不用创建外部类实例就能创建内部类实例    }    static void g(){        //在静态方法中为什么要先创建外部类实例才能创建内部类的实例                 Outer.Inner in = new Outer().new Inner();    }}

 

完全可以将new Inner()当成是一个内部的方法来看待,因为在定义的时候采用的是非static 的所以在static方法中必须要新建一个实例在创建对应实例的内部类。而在non-static中相当于采用了this.

0 0
原创粉丝点击