基本信息
文件名称:Java面向对象之内部类的几类使用场景.docx
文件大小:16.45 KB
总页数:4 页
更新时间:2025-05-20
总字数:约2.72千字
文档摘要

Java面向对象之内部类的几类使用场景

Java内部类是一种特殊的类,它定义在另一个类的内部。内部类提供了许多有用的特性,包括访问外部类的私有成员、隐藏实现细节以及实现回调接口等。以下是Java内部类的一些常用场景及其举例说明:

当某个类需要一个对象来执行其方法时,通常可以使用回调接口。这时,内部类可以作为一个匿名实现类,简化代码。

在这个例子中,ActionListener是一个回调接口,Button类通过ActionListener来执行某个动作。在MAIn类中,我们使用了一个匿名内部类来实现ActionListener接口。

interfaceActionListener{

voidactionPerformed();

classButton{

privateActionListenerlistener;

publicvoidsetActionListener(ActionListenerlistener){

this.listener=listener;

publicvoidclick(){

if(listener!=null){

listener.actionPerformed();

publicclassMain{

publicstaticvoidmain(String[]args){

Buttonbutton=newButton();

button.setActionListener(newActionListener(){

@Override

publicvoidactionPerformed(){

System.out.println(Buttonclicked!);

});

button.click();

访问外部类的私有成员

内部类可以访问外部类的私有成员,这使得内部类成为了一种封装和隐藏实现细节的有效手段。在这个例子中,Inner类可以访问Outer类的私有成员secret。

classOuter{

privateintsecret=42;

classInner{

voidrevealSecret(){

System.out.println(Thesecretis:+secret);

publicInnergetInner(){

returnnewInner();

publicclassMain{

publicstaticvoidmain(String[]args){

Outerouter=newOuter();

Outer.Innerinner=outer.getInner();

inner.revealSecret();//输出Thesecretis:42

实现多继承

Java不支持多继承,但内部类可以帮助我们实现类似的效果。

interfaceA{

voidmethodA();

interfaceB{

voidmethodB();

classMyClassimplementsA{

privateclassInnerBimplementsB{

@Override

publicvoidmethodB(){

System.out.println(MethodBfromInnerB);

privateInnerBinnerB=newInnerB();

@Override

publicvoidmethodA(){

System.out.println(MethodAfromMyClass);

publicvoidmethodB(){

innerB.methodB();

publicclassMain{

publicstaticvoidmain(String[]args){

MyClassmyClass=newMyClass();

myClass.methodA();//输出MethodAfromMyClass

myClass.methodB();//输出MethodBfromInnerB

在这个例子中,MyClass实现了接口A,并通过内部类InnerB实