枚举:

基本上跟Java的差不多,这里就过一遍既可,如下:

还可以接收参数,如下:

枚举还可以定义方法,如下:

看下错误提示:

所以可以这样:

然后咱们再冒号之前定义对象,如下:

下面来使用一下:

当然还可以用Kotlin提供的语法糖来更加精简的进行遍历,如下:

对象声明:

我们之前学过对象表达式,用来解决Java匿名内部类的,其格式如:

而对象声明是这样的:

咱们使用一下:

由于它本身就是对象了,所以直接调用里面的方法,另外它也可以实现一个接口,如下:

其实这个在之前的伴生对象中已经学习过了,回忆一下:

这里做个复习,接下来得梳理下对象表达式跟对象声明的区别

1、对象表达式是立刻初始化或是执行的。

2、对象声明是延迟初始化的,在首次访问的时候进行。

3、伴生对象是在其所对应的类被加载时初始化的,对应于Java的静态初始化。

委托[delegation]:

我们用Java可以实现委托的功能,但是在Kotlin这个语言直接就已经支持了这个东东,这个在Java是不存在的,所谓委托很好理解:本来叫A去做事,而A自己不去做它将其委托给B去做。下面先来看一下类委托:

要是在Java中我们还得传递引用自己来写逻辑,而在Kotlin中直接从语法角度就支持了委托,还是挺强大的。接下来再做一个实验,假如MyClass自己也定义了一个相同的myPrint(),那结果如何呢?下面试一下:

那有个疑问:这个委托背后的原理是啥呢?下面先用文字描述一下:“by关键字后面的对象实际上会被存储在类的内部,编译器则会将父接口中的所有方法都实现出来,并且将实现转移给委托对象来去进行。”下面来反编译一下来论证这点:

最新文章

  1. DOM Scripting -- Web Design with JavaScript and the Document Object Model 第2版 读书笔记
  2. https 双向证书
  3. [小哥Allegro72讲速成视频]
  4. TMS320DM642启动模式(Bootmode)(转)
  5. 升级到EF6 两个注意事项
  6. eclipse中对项目进行分类管理
  7. 【总结】String in Java
  8. hdu 2648 Shopping
  9. OOP 6大基本原则
  10. php checkbox复选框值的获取与checkbox默认值输出方法
  11. WireShark过滤语法
  12. 解决WebService本地访问正常,远程无法访问的问题
  13. C++ crash 堆栈信息获取(三篇文章)
  14. Xcode 6 AutoLayout Size Classes
  15. 查询职责分离(CQRS)模式
  16. wordpress搬家到 linode 步骤简析
  17. ie 浏览器文本输入框和密码输入框的默认样式
  18. ABP文档笔记 - 事件BUS
  19. Mac 配置教程-开发篇
  20. zookeeper配置文件共享中心

热门文章

  1. ue4读取灰度图生成三维地形mesh
  2. Windows 7安装Service Pack 1失败问题
  3. Appium元素定位难点:tap坐标定位不准确
  4. Linux thread process and kernel mode and user mode page table
  5. [转载]机器学习&深度学习经典资料汇总,全到让人震惊
  6. Mysql查看优化后的SQL 语句
  7. listWdiget控件
  8. tensorflow-简单的神经网络
  9. kubernetes 实践二:kubectl命令使用
  10. 私有属性和私有方法l