Kotlin类:功能更强、而更简洁(KAD 03) 1、类声明 2、添加属性 3、添加构造函数 4、现在可以在类内部创建函数 5、Kotlin中默认设置是关闭 结论

作者:Antonio Leiva

时间:Dec 7, 2016

原文链接:http://antonioleiva.com/classes-kotlin/

Kotlin类:功能更强、而更简洁(KAD 03)
1、类声明
2、添加属性
3、添加构造函数
4、现在可以在类内部创建函数
5、Kotlin中默认设置是关闭
结论

Kotlin类尽可能简单,这样用较少的代码完成更多的逻辑。

我将快速展示怎样开始编写Kotlin类,它不同于Java类。

1 class Person

只需用保留字class 加 类名。如果类里没有代码,大括号“{}”都不需要。

说明:是否看见它没有用public修饰符吗?这是因为在Kotlin中所有都时默认为public。

2、添加属性

在Kotlin中,不存在域(或者至少你不需要声明它们)。类有属性。

为了简单,属性替换Java域+getter+setter。这样,为我们的类来声明一对属性:

1 class Person {
2     var name = "Name"
3     var surname = "Surname"
4 }

如果你要写setter,当然可以声明它:

1 var name = "Name"
2     set(value) {
3         name = "Name: $value"
4     }

说明:如你所见,你可以直接转化变量为字符串(Kotlin类:功能更强、而更简洁(KAD 03)
1、类声明
2、添加属性
3、添加构造函数
4、现在可以在类内部创建函数
5、Kotlin中默认设置是关闭
结论),而不用String.format。

 

你是否注意到这可节省一定数量的代码吗?所有的setter和getter都直接写出。

 

3、添加构造函数

通常,每个类仅需要一个构造函数。但在后续文章中,你能看到可以添加多个构造函数。

 

如仅有一个构造函数,编写它的方法可以简化很多:

1 class Person(val name: String, val surname: String)

这会发生什么?

  1. 属性消失了?事实上,它们仍在那里。但是,如果构造函数的自变量是由var或val说明,这些属性就这行中同时创建了。
  2. 在类定义之后直接编写构造函数。你不需要额外创建方法和为属性赋值。

 

4、现在可以在类内部创建函数

接着,如你希望的那样,在内部使用属性:

1 class Person(val name: String, val surname: String) {
2     fun getFullName() = "$name $surname"
3 }

如上列所示,当数值是直接分配时,函数可以用简约的方式编写。但是,仍然可以用“旧式”Java方法编写:

1 fun getFullName(): String {
2     return "$name $surname"
3 }

在这种情况下,你需要定义返回类型。

 

5、Kotlin中默认设置是关闭

 

所以不能被扩展,并且子类(在类扩展情况下)不能重载父类函数,除非类用保留字open指明:

1 open class Person(val name: String, val surname: String)
2 class Cop(surname: String) : Person("Mr", surname)

看到父类构造函数是怎样被调用的吧。简单清晰!

结论

在这篇文章中,你已经见到Java类和Kotlin类之间的一些不同之处。如何你要了解更多,我建议你订阅接收我为你准备的一组文章。