内部类

Posted theqi

tags:

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

1.内部类就是在一个类的内部又创建一个类.。

内部类既可以访问自身的数据域,也可以访问创建它的外围类对象的数据域。

内部类的对象总有一个隐式引用, 它指向了创建它的外部类对象

 

为了说明这个概念 , 我们将外围类对象的引用称为 outer(有点类似与this),但是其实并没有。

这个outer写出应该是 外类类名.this

 

下面这个例子写出了内部类对象的创建

AA a= new AA() ;//其中AA类中有一个BB类
AA.BB b = a.new BB();

2.局部内部类:局部内部类就是将类创建到方法中,他不能加public这种修饰符。局部类可以对外部世界可以完全地隐藏起来 。 即使外部类中的其他代码也不能访问它。 除了定义局部内部类的方法之外 , 没有任何方法知道这个内部类的存在

3.匿名内部类假如只创建这个类的一个对象 , 就不必命名了 。 这种类被称为匿名内部类。

代码如下:

ActionListener listener = new ActionListener()
{
  public void actionPerformed ( ActionEvent event )
  {
    System.out.println (" At the tone, the time is " + new Date() ) ;
    if (beep) Toolkit.getDefaultToolkit( ).beep( ) ;
  }
};

 

它的含义是 : 创建一个实现 ActionListener 接口的类的新对象, 需要实现的方法 actionPerformed 定义在括号内

SuperType 也可以是一个类 , 于是内部类就要扩展它

 

3.静态内部类

使用内部类只是为了把一个类隐藏在另外一个类的内部, 并不需要内部类引用外围类对象。 为此 , 可以将内部类声明为static , 以便取消产生的引用




 



 

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

片段 - 全局视图变量与本地和内部类侦听器和内存泄漏

为啥片段类应该是公开的?

ForegroundService没有从片段开始?

在内部片段类中使用ListView

自定义无内存泄漏的Handler内部类

底部导航 如何从片段内部更改片段