您现在的位置是:首页 > 文章详情

Kotlin内部类

日期:2018-04-01点击:633

一、内部类:
定义在类内部的类
与类成员有相似的访问控制
kotlin 默认是静态内部类,非静态用inner关键字
this@outter,this@inner的用法

二、匿名内部类
没有定义名字的内部类
类名编译时生产,类似Outter$1.class

三、看一下Java中的内部类

package net.println.kotlin.chapter4.innerClass; /** * @author:wangdong * @description:Java中的内部类 */ /**外部内*/ public class InnerClassJava { private int a; //静态内部类和非静态内部类的区别 //非静态内部类,持有外部类的状态的 public class Inner{ public void hello(){ //可以访问到外部类的成员变量 System.out.println(a); System.out.println(InnerClassJava.this.a); } } //静态内部类 public static class StaticInner{ public void hello(){ //不能访问外部类的成员变量 //System.out.println(a); } } public static void main(String[] args) { //如果要实例化非静态内部类Inner //Inner inner = new Inner(); //这样肯定是不行的 //如果是静态内部类就可以随便new了 //Inner inner = new Inner(); //首先要实例化外部类 InnerClassJava innerClassJava = new InnerClassJava(); //再用外部类的实例去new内部类 Inner inner = innerClassJava.new Inner(); //在Java里面写一个匿名内部类 View view = new View(); //在java中,匿名内部类就能继承一个类,不能实现接口 view.setOnClickListener(new OnClickListener() { @Override public void onClick() { } }); } } 

四、看一下Kotlin中的内部类

package net.println.kotlin.chapter4.innerClass /** * @author:wangdong * @description: */ /**外部类*/ open class Outter{ val a: Int = 0 //默认静态内部类 //不能访问外部类的成员变量 class StaticInner{ fun hello(){ //println(a) } } //非静态内部类,关键字inner //可以访问外部类的成员变量 inner class Inner{ fun hello(){ println(a) println(this@Outter.a) } } } /**定义一个点击监听的接口*/ interface OnClickListener{ fun onClick() } /**定义一个View类*/ class View{ //可变的 var onClickListener: OnClickListener ?= null } fun main(args: Array<String>) { //静态内部类实例化 val staticInner = Outter.StaticInner() //非静态内部类实例化 val inner = Outter().Inner() //注册view val view = View() //这边涉及到一个匿名内部类,就是没有名字的内部类,继承一下Outter类 //kotlin中匿名内部类,就和普通的类一样,可以继承一个类,实现多个接口 view.onClickListener = object: Outter(),OnClickListener{ override fun onClick() { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } } }
原文链接:https://yq.aliyun.com/articles/614568
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章