JAVA内部类

        要点:

        内部类在概念和语法上都被视为外部类的成员。就像成员变量和成员方法一样。

        

目录

        要点:

        内部类在概念和语法上都被视为外部类的成员。就像成员变量和成员方法一样。

 一.静态内部类

        1.实例化静态内部类:

        2.静态内部类访问外部类成员变量:

        二.实例内部类:

        1.实例化实例内部类:

        2.外部类成员变量 与 实例内部类成员变量 同名情况:

        三.匿名内部类:

        第一种:

        第二种:

        四.局部内部类(几乎不使用):


 一.静态内部类

        静态内部类是在一个类内部定义的,并且被  static 关键字修饰的类。

         先看代码:

        

         这里静态内部类 InnerClass 是定义在外部类 OuterClass 的里面,并且静态内部类是通过 static 关键字修饰的。

        1.实例化静态内部类:

        上面我们定义了一个静态内部类,那么应该怎么实例化一个静态内部类对象?

        像这样:

        

         在右边的 Test 方法中,通过:

        外部类类名 . 内部类类名 变量 = new  外部类类名 . 内部类类名() 

        来实例化静态内部类对象。

        2.静态内部类访问外部类成员变量:

        看下面代码:

        

        可以看到,外部类成员变量 data3 可以直接访问,因为外部类成员变量 data3 是静态成员变量,访问它不依赖对象

        但是,外部类成员变量 data1 和 data2 访问不了,因为他们是非静态成员变量,需要依赖对象。所以要想访问他们两个,应该怎么办?

        这样:

        

        我们实例化 一个外部类对象,再通过外部类对象的引用就可以访问了。

        

        二.实例内部类:

        1.实例内部类写法:

        

          内部类 InnerClass  不加 static 修饰的 内部类 就是 实例内部类。

        1.实例化实例内部类:

        像这样:

        

        看右边的代码 ,因为 InnerClass 他是实例内部类,实例的都是依赖对象的,所以要先实例化外部类,再通过外部类对象引用来实例化 实例内部类

        还有另一种方法来实例化 实例部类:

        

        看右边代码,这种是通过 利用匿名外部类对象来实例化 实例内部类。

        

        2.外部类成员变量 与 实例内部类成员变量 同名情况:

        看代码:

        

       

         通过Test测试打印结果:

        

        这里可以通过 外部类类名 . this .同名成员变量 来访问同名的外部类成员变量。

        

        三.匿名内部类:

        匿名内部类的定义使用:

        第一种:

        

        此时,new OuterClass就是匿名内部类,也可以认为这个没名字的类 继承了OuterClass类,我们就要重写OuterClass 类里的 test 方法,想要调用test方法就可以通过  在花括号--- >  }  . 重写方法名 ;

        第二种:

        

           此时,new OuterClass 本身还是匿名内部类,我们只是通过给 他一个引用来接收他这个匿名内部类。然后通过 引用 来调用 重写的test方法。

        

        

        四.局部内部类(几乎不使用):

        

             局部内部类是定义在 方法里面 的,局部内部类做作用域只能 在方法里面,所以只能在方法里面 实例化,访问成员变量.......; 出了方法外面就不能使用了。

        并且,局部内部类不能被 public ,static 修饰符修饰。

        

        

        

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值