13.Java核心技术—内部类

本文详细介绍了Java内部类的概念及用途,包括成员内部类、静态内部类、局部内部类和匿名内部类的特点与应用场景。

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

      内部类(inner class):是定义在另一个类中的类,使用内部类的原因有三点:一是,内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据,

                                     但是外部类不能直接访问内部类的成员; 二是,内部类可以对同一个包中的其他类隐藏起来;三是,当需要定义个回调函数且不想编写

                                     大量代码时,使用匿名内部类不叫好。

     注意:内部类不依赖于外部类,内部类可用static、protected和private修饰,外部类只能用public和default(省略的)修饰。

   内部类的分类:成员内部类、静态内部类、局部内部类和匿名内部类

    成员内部类:作为外部类的一个成员存在,与外部类的属性和方法并列。在内部类中访问实例变量:this.属性

                     在内部类访问外部类的实例变量:外部类名.this.属性。对于一个名叫Outer的外部类和名叫Inner的内部类,编译完成后出现Outer.class和

                     Outer$Inner.class两类。

         建立内部类对象的时候要注意:在外部类的内部可以直接使用,Inner in=new Inner();

                                                而在外部类的外部生成一个内部类对象,需要通过外部类对象生成。Outer.Inner in=new Outer().new Inner();

    静态内部类:定义在类中,用static修饰。静态内部类可以直接访问外部类的静态成员,但是不能直接访问外部类的实例成员,可以通过外部类的实例来访问。

                     静态内部类可以定义静态成员,其他的内部类不可以。

        生成一个静态内部类的对象:Outer.Inner in=new Outer.Inner()

    局部内部类:在方法中定义的内部类,类似局部变量。声明局部内部类的时候不可加修饰符public、protected、private其范围为定义它的范围。可以访问外部类的

                     所有成员,此外,还可以访问所在方法中的final类型的参数和变量。我们特别注意的是在类外不可直接生成局部内部类,这是要保证局部内部类对外是

                     不可见的。要想使用局部内部类,需要生成对象,但是只能在方法中使用局部内部类。

    匿名内部类:它是一个特殊的局部内部类,局部内部类的特性对它都适用。它没有类名,它是用一种隐含的方式实现一个借口或继承一个类。它没有构造方法。它一

                    定在new的后面。

          

转载于:https://www.cnblogs.com/crearo-ssy/archive/2012/05/02/2479359.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值