首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin系列之主构造方法和初始化语句块

前面我们已经说过类和接口的知识点,今天来看看Kotlin中的主构造方法和初始化语句块。

我们知道在Java中也存在的概念,也有的概念。所以今天还是拿Kotlin和Java进行对比学习。

Java的构造方法和初始化块

在Java中构造方法有以下几点的规则。

1 . 构造方法没有返回值,方法名必须与类名相同

2 . 如果没有显式声明构造方法,Java会给我们生成一个默认的不带任何参数的构造方法

在Java中的初始化块又分为和,他们的规则如下。

1 . 在每次对象创建时被调用,只在类被加载时调用,且只会被调用一次

2 . 用来在一个对象创建时初始化其中的一些参数

下面通过代码来简单解释以下上面的规则。

Java代码

上面都是java的基础知识,写出来主要是方便与Kotlin的进行对比。

Kotlin的构造方法和初始化块

在Kotlin中也存在和Java中相似的概念,但也又一些差异。

这里有一个概念是。在Kotlin中一个类同样可以声明多个构造方法,但Kotlin将他们分为和。

是一个主要且简洁的初始化类的方法,而且它声明在类的外部,而是声明在类的内部。今天我们先说说和与之相关的。

在Kotlin中构造方法的声明需要使用到关键字,初始化语句块的声明需要使用到关键字。在Kotlin中构造方法一般是用于传入一些创建类时需要的参数,配合初始化语句块来对类的属性进行初始化。下面用代码来实际说一下。

Kotlin代码

上面的代码还是很好理解的,其实就相当于把我们的构造方法和类的声明放在了一起。注意上面的和我们java中的用法是一样的,都是在于构造方法的参数名和类的属性名相同时来区分两者。

当然Kotlin是一门追求简洁的语言,我们可以把上面的代码进一步简化。像下面这样。

Kotlin代码

直接省略了关键字和初始化语句块,直接赋值即可。

当你觉得这样已经够简洁的时候,还有更简洁的,想下面这样。

Kotlin代码

直接将关键字加载构造方法属性前面,就完成了构造方法参数的声明和类属性的声明和赋值,甚至连也不需要了。

Kotlin中的构造方法新特性

除了上面简洁的语法,还有很多新特性。我们在前面的文章中说过,一个方法的参数可以又默认值,也可以在传入方法参数时带上参数名使代码可读性更好。由于构造方法也是方法,我们同样可以使用这些特性,就像下面代码描述的那样。

Kotlin代码

那我们如何使用上面的类呢?

Kotlin代码

是不是代码简洁清楚了很多呢。

Kotlin构造方法和继承

我们知道在Java中如果我们没有显式声明一个构造方法,就会为我们默认添加一个无参的构造方法,在Kotlin中也是一样的。

那么当我们涉及到继承时,我们该怎么写呢?在Kotlin中当你继承一个类不再只是写出类名就可以了,而是要给你继承类的构造方法同时传入参数j将,就像下面这样。

Kotlin代码

上面的代码中,我们创建这个子类,并且将它的构造方法的name参数传递给了父类的构造方法。同时我们还为子类增加了一个新的属性。

当然,如果我们继承的父类没有指定构造方法,由于有默认构造方法的存在,我们在继承时必须要注意。像下面的代码一样。

Kotlin代码

这里我们在继承father类时必须有,因为这里的意义是构造方法。

我们前面也说过接口是没有构造方法,不能被实例化的,所以就没有,像下面这样。

Kotlin代码

写在最后

可以看出Kotlin在模仿Java的一些方面的同时,可以保证我们用更简洁清楚和更少的代码来完成我们的工作。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180207G0IMH000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券