内部类

Posted 眼泪笑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部类相关的知识,希望对你有一定的参考价值。

内部类

1.1 内部类的概述

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

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

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

 

1.1 成员内部类的访问方式

 

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

 

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

 

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

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

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

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

 

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

疑问: 目前打印的num20,如果想打印10的话,应该怎么做?

解答:这时候其实在show方法中已经存在了两个this对象,一个是外部类对象,一个是内部类对象,所以要在this前面加上类名标明对应的this

 

 

1.1 局部内部类

局部内部类概述:包含在外部类的函数中的内部类称之为局部内部类。

访问:可以在包含局部内部类的方法中直接创建局部内部类的对象调用局部内部类的成员。

注意:局部内部类只能访问所在函数的fanal属性。

 

以上是关于内部类的主要内容,如果未能解决你的问题,请参考以下文章

内部类

内部类

Java内部类详解(含:成员内部类局部内部类匿名内部类静态内部类)

一个java内部类有几个分类?

内部类之静态内部类

java内部类的匿名内部类