内部类就是一个被包含在另外一个类内部(大括号里面)的类。简单定义形式如下:

什么时候使用内部类呢?
当一个类B只会被类A使用的时候
好处是:更好的封装,可以访问内部变量

如狗窝(DogHouse)类,狗鞋(DogShoes)类,和狗统计器(DogStat)等类只有在狗(Dog)类中会用到,所以可以使用内部类。



内部类还可以放在一个具体的方法里面。
如果一个类只有某个方法使用,可以在这个方法里面定义这个内部类,这个内部类出了这个方法就不能使用了。
定义方法就是类的定义写在方法的大括号里面。

如果一个类只用一次,就为了某个特定的变量或者方法创建一个实例,这个类可以声明为匿名内部类(Anonymous inner class)。
匿名内部类不需要类名,只有类的定义并且在定义的同时创建一个实例就可以了。
第一种写法:直接在参数中定义

第二种写法:在定义变量的时候定义

静态内部类
内部类也可以是静态的类,如:

静态内部类的实例化使用外部类的类名访问:

网友评论