1、类
类是空的可以省略大括号, 如:
class A(name: String)
注意:kotlin与java的一个不同点,代码句结尾不必加“;”号
2、类继承
默认是final的,所以只能继承那些明确声明open或abstract的类。
3、函数
一切kotlin函数都会返回一个值,如果没有指定默认返回一个Unit类
可以省略结尾分号
当返回值用一个表达式即可计算出来,可以使用等号代替大括号,如: 
fun add(x: Int, y: Int) Int = x + y
4、默认参数
为参数指定一个默认值,这样这个参数就成了可选,如:
fun toast(msg: String, length: Int = Toast.LENGTH_LONG){
...
}
使用时就可以不传length这个参数,如:
toast("test toast")
5、通过参数名传参
假设函数:
fun toast(msg: String, tag: String = "default", length: Int = Toast.LENGTH_LONG)
可以这样使用:
toast(msg = "hello", length = 1000)
这样可以忽略中间某个默认参数
6、实例化
实例化省略new关键字,如
var layoutManager = LinearLayoutManager(this)
7、伴随对象companion object
在kotlin中使用companion object来定义一些静态属性、常量和静态函数,这个对象被这个类所有对象共享,类似java中的静态变量和方法, 如:
class Circle(var r: Float){companion object{var pi = 3.14f}fun getLength(): Float{return 2 * pi * r}
}
8、接口
kotlin的接口与java接口不同之处在于kotlin的借口可以包含代码,如:
interface TestInterface {var i : Intfun test(){i = 3}fun interfaceMethod()
}

可以看到在接口中可以定义变量和函数,而实现接口的子类可以直接使用变量和函数,如:

class TestInterfaceClass(override var i: Int) : TestInterface{override fun interfaceMethod() {test()i = 4}
}
9、别名
在java中,如果有两个相同名称的类,在同一个类中使用时,其中一个类需要使用完整包名。
在kotlin中,可以指定一个别名来避免使用完整包名,如:
import com.test.common.Product
import com.test.model.Product as ProdectModel

这样在代码中只要使用ProductModel就可以了,如:

var productA = Product()
var productB = ProdectModel()
但是注意,有了别名的类就不能在该类中使用原有的类名了。
10、修饰符
在kotlin中默认的修饰符是public,节约了很多时间和字符。
kotlin中的修饰符有private\protected\internal\public
其中internal是整个module可见的,当然它依赖于所在领域的可见性(比如private类下的internal函数)。这里的module就是android studio中的module概念,是指可以单独编译、运行、测试的独立功能性模块。
所有构造器默认都是public的,但是可以用下面的语法来修改可见性:
class C private contructor(a: Int){ ... }
11、内部类
在kotlin中内部类如果是普通类,则无法访问外部类成员(类似java中的static静态内部类),如
class ModelA{val a = 1class ModelB{val b = a}
}

上面的val b = a代码就会报错无法编译。

如果想在内部类访问外部类成员,需要用inner修饰,如

class ModelA{val a = 1inner class ModelB{val b = a}
}
这样就可以正常编译运行。

kotlin学习笔记——类、函数、接口相关推荐

  1. Kotlin学习笔记——类和对象

    推荐kotlin学习书籍 下载链接: https://pan.baidu.com/s/19b5WYDD3Yqh1CAsRvpUsqQ 提取码获取方式:扫描关注下面微信公众号,回复关键字: kotlin ...

  2. Kotlin 学习笔记(八)—— Kotlin类与对象之接口

    Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...

  3. kotlin学习笔记——枚举、封闭类

    1.枚举 kotlin中提供类枚举的实现,与java相同.枚举可以带参数,如 enum Icon(val res: Int){MENU(R.drawable.menu),BACK(R.drawable ...

  4. Kotlin 学习笔记(七)—— Kotlin类与对象之属性与字段

    Kotlin 学习笔记(七)-- Kotlin类与对象之属性与字段 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- ...

  5. Kotlin学习笔记12——数据类和密封类

    Kotlin学习笔记12--数据类和密封类 前言 数据类 在类体中声明的属性 复制 componentN 解构声明 密封类 尾巴 前言 上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotli ...

  6. Kotlin学习笔记1——变量、函数

    Kotlin学习笔记1 (学习教材为<第一行代码(第三版)>by郭霖) 1.Kotlin概述 ​ Java虚拟机不关心class文件的编译来源,即只要是符合规格的class文件,Java虚 ...

  7. Kotlin学习笔记(3)- 语法

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

  8. Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~

    又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...

  9. Kotlin学习笔记(2)- 空安全

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

最新文章

  1. 数据结构为什么重要?
  2. Mysql将日期转为字符串
  3. 2017年阵亡创业公司圈钱魔咒 烧钱补贴买流量已经过时?
  4. 你的 GitHub 代码已打包运往北极,传给 1000 年后人类
  5. 密码可见_教你如何批量删除微博、设置仅自己可见、仅好友可见等
  6. QlikSense移动端使用攻略
  7. python永久保存数据_python如何保存数据
  8. css3中的动画学习分享
  9. 三菱四节传送带控制梯形图_【毕业设计】三菱plc(论文)基于PLC的传送带的控制系统设计毕业设计...
  10. Mysql主从占用大量cpu_Mysql占用过高CPU时的优化手段
  11. 前向声明include区别
  12. 各地实时摄像头_你头顶的摄像头将变成有脑子的眼睛!亚马逊推出AWS Panorama,强监控时代来临?...
  13. lnmp一键安装包linux,lnmp一键安装包下载地址
  14. steam令牌 未能连接到服务器,连接错误无法连接到steam网络怎么办 steam网络连接错误解决方法【图文】...
  15. CHK文件恢复工具、软件(CHKRecovery V2.0)
  16. NSDate 转为NSString 时差的问题
  17. IO子系统(一) — 块设备驱动程序
  18. Q2复苏慢,华米科技的“两条腿”还行吗?
  19. 公路施工过程中对于路缘石滑模机作业流程的解析
  20. Djanog 模板层

热门文章

  1. C专家编程--读书笔记六 运行时数据结构
  2. WebSphere Application Server v6中的问题诊断以及日志策略
  3. Java笔记(基础第二篇)
  4. VK Cup 2017 - Round 2
  5. iOS wkwebview https 加载不受信用的站点
  6. 每天一个linux命令--定时启动
  7. 我爱我家:我为什么选择AppCan?
  8. Debian 系统修改语言为英文
  9. JS replace 回调
  10. 算法导论练习 10.4-5及12.1-3