【码上开学】Kotlin 里那些「不是那么写的」

你以为我上次三个月就更,然而我等了一年。

你以为我这次要再等一年,然而我两天就又更了。


大家好,我是扔物线朱凯。这是码上开学 Kotlin 基础部分的第二期:Kotlin 里那些「不是那么写的」。因为不是第一期了,咱就不多废话了,直接视频伺候:

看完视频还不过瘾?

可以点击下方「阅读原文」或者用浏览器打开 kaixue.io/kotlin-basic-2 ,把和视频配套的文章看了。

文章部分内容预览:

上一篇我们讲了 Kotlin 上手最基础的三个点:变量、函数和类型。大家都听说过,Kotlin 完全兼容 > Java,这个意思是用 Java 写出来的代码和 Kotlin 可以完美交互,而不是说你用 Java 的写法去写 Kotlin > 就完全没问题,这个是不行的。这期内容我们就讲一下,Kotlin 里那些「不 Java」的写法。

Constructor

上一篇中简单介绍了 Kotlin 的构造器,这一节具体看看 Kotlin 的构造器和 Java 有什么不一样的地方:

  • Java

 
  


 ☕️
 public class User {
     int id;
     String name;
       ?   ?
     public User(int id, String name) {
         this.id = id;
         this.name = name;
     }
 }
  • Kotlin

 
  


 ?️
 class User {
     val id: Int
     val name: String
          ?
     constructor(id: Int, name: String) {
  //? 没有 public
         this.id = id
         this.name = name
     }
 }

可以发现有两点不同:

  • Java 中构造器和类同名,Kotlin 中使用 constructor 表示。

  • Kotlin 中构造器没有 public 修饰,因为默认可见性就是公开的(关于可见性修饰符这里先不展开,后面会讲到)。

init

除了构造器,Java 里常常配合一起使用的 init 代码块,在 Kotlin 里的写法也有了一点点改变:你需要给它加一个 > init 前缀。

  • Java

 
  


 ☕️
 public class User {
    ?
     {
         // 初始化代码块,先于下面的构造器执行
     }
     public User() {
     }
 }
  • Kotlin

 
  


 ?️
 class User {
     ?
     init {
         // 初始化代码块,先于下面的构造器执行
     }
     constructor() {
     }
 }

正如上面标注的那样,Kotlin 的 init 代码块和 Java 一样,都在实例化时执行,并且执行顺序都在构造器之前。

上一篇提到,Java 的类如果不加 final 关键字,默认是可以被继承的,而 Kotlin 的类默认就是 final 的。在 Java 里 final 还可以用来修饰变量,接下来让我们看看 Kotlin 是如何实现类似功能的。

完整文章可以点击下方「阅读原文」或者用浏览器打开 kaixue.io/kotlin-basic-2 查看。

这是什么项目?

码上开学,是一个针对 Android 工程师的 Kotlin 上手指南。虽然针对上手,但包含了许多你在网上任何地方(包括英文社区、包括官方文档)都看不到的必备的技术细节。

码上开学项目由扔物线创办,目前由即刻 Android 团队协作一同产出。

觉得赞?

如果你觉得赞,就分享、转发和点击右下角的在看,让更多需要的人也看到吧。但前提一定是,你真的觉得赞

最后,别忘了扫码关注,我们的后续内容将第一时间推送到你。

640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值