Java内部类

本文详细介绍了Java内部类的概念、分类及特点,包括成员内部类、局部内部类、匿名内部类和静态嵌套类,并通过示例代码说明了每种类型的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内部类定义:

 

       定义在一个类内部的类,被称为内部类。

内部类分类:

 

  • 成员内部类
  • 局部内部类(方法内部类)
  • 匿名内部类
  • 静态嵌套类

四种内部类的共性   

 

  1. 内部类仍然是一个独立的类,在编译后内部类会被编译成独立的.class文件爱你,只是在前面加上外部类的类名和$符号(Perston$Student.class)。
  2. 内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由访问外部类的成员变量和方法,无论是否为private。
  3. 内部类的this引用。内部类中同样可以使用this.成员变量,如要使用外部类的成员变量,则使用外部类名.this.成员变量。

四种内部类的区别

     一、成员内部类:它相当于外部类的一个成员变量或方法,可用修饰符为 final、abstract、public、private、protected、strictfp和static 。如下:

 

 

 二、局部内部类(方法内部类):在外部类的某个方法内定义的类,与成员内部类不同,它相当于外部类的一个局部变量,修饰符只能用 final abstract 。只能在定义该内部类的方法内实例化,不能在次方法外对其实例化

                                              局部内部类对象不能使用该内部类所在方法的非 final 局部变量。因为方法的局部变量位于栈上,只存在与该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该

                                              方法结束后,在方法内创建的内部类对象可能仍然存在于堆中。例如,如果对它的引用被传递到期他代码上,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象相

                                              同,所以内部类对象只能使用所在方法中被定义为 final 的局部变量。静态方法的局部内部类没有 this 的引用。    示例:

 

 

 三、 匿名内部类:没有名字的内部类

 

        1、继承式的匿名内部类

 

       

 

        2、 接口式的匿名内部类

 

       

 

        3、 参数匿名内部类:顾名思义,将匿名内部类作为参数使用

 

四、静态嵌套类:从技术上讲,静态嵌套类不属于内部类。因为内部类与外部类共享一种特殊关系,更确切的说是对实例的共享关系。而静态嵌套类则没有上述关系。只是它的位置在一个类的内部。因此也被成为顶级嵌套类。静

                        态的含义是该内部类可以像期他静态成员一样,没有外部类对象十,也能够访问它。静态嵌套类不能访问外部类的成员和方法。

 

        

 

关键性补充

 

       看了 Think in Java 的内部类章节后,有点小感觉。其实Java的原理都很简单,困难就在于Java的灵活性,而要掌握牢固则必须夯实基础,你不变应万变。看着书上的例子敲了一下

 

       首先有两个接口 IService 和 IServiceFactory

       IService:

 

      

 

       IServiceFactory:

 

      

 

       其次还有两个类 Implement1 和 Implement2

       Implement1:

 

      

 

      Implement2:

 

     

 

      对外只暴露了一个接口,利用匿名内部类实现了IServiceFactory的功能。

 

      工厂类:

 

     

 

      入口函数:

 

     

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值