zoukankan      html  css  js  c++  java
  • 嵌套类与内部类深入详解

     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。

  • 相关阅读:
    详解EBS接口开发之采购申请导入
    EBS HRMS数据表
    会计期间
    帐套和会计科目的理解
    oracle中动态SQL详解
    不同币种汇率转换
    API创建/更新员工联系电话
    API创建/更新员工薪水
    Android 圆形、圆角图片ImageView
    Knowledge Generation Model for Visual Analytics
  • 原文地址:https://www.cnblogs.com/webor2006/p/11333101.html
Copyright © 2011-2022 走看看