嵌套类与内部类深入详解

 Kotlin的学习因为工作的事又给担误了,不能半途而废,继续!!

嵌套类【Nested Class】:

直接看代码:

接下来咱们来访问NestedClass中的nestedMethod:

很显然需要实例化,如下:

以上就是一个很典型嵌套类的实例,貌似跟Java的内部类好像的样子,不过还是有区别的,下面继续看另外一个例子,看一下内部类。

内部类【Inner Class】:

呃,那嵌套类跟内部类有啥区别么?很明显都是定义在类的内部嘛,其实是有本质区别的,继续来修改该代码,让内部类的innerMethod()来访问外部类的成员变量,如下:

好,接下来咱们来调用下这个方法:

呃,是不是编译器出问题了?那再继续改:

这个调用的区别原因为何呢?就里先看一下关于这俩的总结就能理解了:

关于内部类与嵌套类之间的区别与联系:

1、嵌套类:对应于Java的静态内部类(既有static关健字修饰的内部类),只要在一个类的内部定义了另外一个类,那么这个类就叫做嵌套类,相当于Java当中有static关键字修饰的内部类。

2、内部类:对应于Java中的非静态内部类(既没有static关键字修饰的内部类),使用inner关键字在一个类的内部定义的另外一个类就叫做内部类,相当于Java当中没有static关键字修饰的内部类。

局部嵌套类:

嵌套类除了可以定义在类的里面,其实还可以定义在方法里面,实际用得比较少但总归还是得知道,它就是局部嵌套类,下面来瞅下:

综合例子:

下面用一个综合的例子来使用一下嵌套类和内部类:

先定义一个内部类:

接下来再定义一个方法来创建PersonFeature对象:

内部类持有外部类的引用:

我们知道在Android中的Handler中经常会提到它的一个性能优化就是将其声明为静态内部类,因为非静态内部类是会持有外部类的引用的,怎么理解:

变量重名的访问方式:

如果说一个相同的变量名称存在于外部类和内部类中,该如何访问呢?下面来看下:

好,接下来访问一下:

可以发现:Kotlin访问外部类变量的方式:this@OuterClass.str,而在Java中访问外部类变量的方式:OuterClass.this.str。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webor2006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值