java 内部类(inner class)详解

  • 时间:
  • 浏览:0

正如2.3代码中display()法子那样,在内部类顶端创建内部类,就像创建普通对象一样直接创建:

真是顶端2.2例子中亲戚朋友可能看一遍了咋样创建内部类。可能要创建另另一个内部类对象,前要利用outerClass.new来创建:

法子内部类定义在内部类的法子中,局部内部类和成员内部类基本一致,而是我 它们的作用域不同,法子内部类非要在该法子中被使用,出了该法子就会失效。 对于这一 类的使用主而是我 应用与避免比较简化的什么的什么的问题,想创建另另一个类来辅助亲戚朋友的避免方案,到那时又不希望这一 类是公共可用的,而是我 就产生了局部内部类。

静态内部类不都前要使用任何外围类的非static成员变量和法子,而内部类则都都前要

在成员内部类中要注意两点:

关键字static都前要修饰成员变量、法子、代码块,真是它还都前要修饰内部类,使用static修饰的内部类亲戚朋友称之为静态内部类。静态内部类算是静态内部类之间存在另另一个最大的区别,亲戚朋友知道非静态内部类在编译完成随后会隐含地保存着另另一个引用,该引用是指向创建它的外围内,随后静态内部类却没法。没法这一 引用就意味:

成员内部类也是最普通的内部类,它是内部类的另另一个成员,而是我 他是都前要无限制的访问外围类的所有成员属性和法子,尽管是private的,随后外围类要访问内部类的成员属性和法子则前要通过内部类实例来访问。

内部类是另另一个编译时概念,编译后内部类及其内部类会生成另另一个独立的class文件: OuterClass.classOuterClass$InnerClass.class,我用javac编译器对顶端的OuterClass进行编译:

一般使用匿名内部类的场景是,要继承或实现的接口非要另另一个抽象法子,比如打上去另另一个监听器:

在顶端例子中亲戚朋友都前要看一遍,内部类都前要直接访问内部类属性,尽管内部类属性是用private修饰的。这是可能在创建内部类时,内部类会自动捕获另另一个内部类的引用,而是我 内部类访问内部类元素,实际上是通过他所持有内部类引用访问的。在java中,亲戚朋友都前要通过OuterClass.this来获得内部类的引用,请看下面例子:

内部类创建法子示例:

真是亲戚朋友还都前要一步到位:

匿名内部类真是而是我 另另一个没法名字的法子内部类,而是我 它符合法子内部类的所有约束,初次之外,还有一些地方前要注意:

另另一个内部类的例子

在Java中内部类主要分为成员内部类、法子内部类、匿名内部类、静态内部类。

编译后的结果: