首页 > 代码库 > 内部类、异常

内部类、异常

内部类的概述

将类定义在另一个类的内部则成为内部类。其实就是类定义的位置发生了变化。

技术分享

在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为成员内部类局部内部类

备注:内部类生产的class文件为 “外部类$内部类”,为了标明该内部类是属于具体哪个外部类的。

成员内部类的访问方式

  1. 内部类可以直接访问外部类的成员属性。(孙悟空相当于内部类飞到牛魔王的肚子里面去)。
  2. 外部类需要访问内部类的成员属性时需要创建内部类的对象。
    1. 在外部类的成员函数中创建内部类的对象,通过内部类对象对象直接访问内部类的成员。
    2. 在其他类中直接创建内部类的对象。

            Outer.Inner inner = new Outer().new Inner();

技术分享

外部类访问内部类的属性

技术分享

编译异常分析:外部类需要访问内部类的属性时,需要创建内部类的对象访问。

技术分享

有A类和B类,当A类想要直接访问B类中的成员,而B类又需要建立A类的对象来A类中的成员。这时,就将A类定义成B类的内部类。比喻:孙悟空和铁扇公主。孙悟空到了公主肚子中,就成了内部类(其实是持有外部类的对象引用)。

 

疑问: 什么时候使用内部类呢?

当我们分析事物时,发现事物的内部还有具体的事物,这时则应该定义内部类了。

比如人体是一个类,人体有心脏,心脏的功能在直接访问人体的其他内容。这时就将心脏定义在人体类中,作为内部类存在。

内部类的优势:成员内部类作为外部类的成员,那么可以访问外部类的任意成员。

成员内部类访问细节 

技术分享

私有的成员内部类不能在其他类中直接创建内部类对象来访问。

技术分享

 

如果内部类中包含有静态成员,那么java规定内部类必须声明为静态的访问静态内部类的形式:Outer.Inner in = new Outer.Inner();  

 

内部类、异常