目录
创建类
调用类
类的继承------open
构造函数
创建类
创建类和创建java文件一样,选择需要创建的目录New→Kotlin File/Class
Kotlin中也是使用class
关键字来声明一个类的,这一点和Java一致。现在我们可以在这个类中加入字段和函数来丰富它的功能,这里我准备加入name
和age
字段,以及一个eat()
函数,因为任何一个人都有名字和年龄,也都需要吃饭。
class Person {var name = ""var age =0fun eat(){println(name+age+"岁,正在吃东西")}
}
调用类
Person
类已经定义好了,接下来我们看一下如何对这个类进行实例化,代码如下所示:
fun main() {val person =Person()person.age=10person.name="张三"person.eat()
}
Kotlin中实例化一个类的方式和Java是基本类似的,只是去掉了new
关键字而已。之所以这么设计,是因为当你调用了某个类的构造函数时,你的意图只可能是对这个类进行实例化,因此即使没有new
关键字,也能清晰表达出你的意图。Kotlin本着最简化的设计原则,将诸如new
、行尾分号这种不必要的语法结构都取消了。
上述代码将实例化后的类赋值到了person这个变量上面,person
就可以称为Person
类的一个实例,也可以称为一个对象。通过赋值,然后调用eat()函数。一个类的创建和调用就完成了。这也是最基本的面向对象的用法:就是要先将事物封装成具体的类,然后将事物所拥有的属性和能力分别定义成类中的字段和函数,接下来对类进行实例化,再根据具体的编程需求调用类中的字段和方法即可。
类的继承------open
创建一个Student类,加入sno
和grade
字段。
class Student{var sNo=""var grade=0
}
在Java中,一个创建的类直接通过extends关键字就可以被继承,但是在Kotlin中是不行的,它默认创建的类无法被继承,需要通过关键字open
open class Person {...
}
加上open
关键字之后,我们就是在主动告诉Kotlin编译器,Person
这个类是专门为继承而设计的,这样Person
类就允许被继承了。
第二件事,要让Student
类继承Person
类。在Java中继承的关键字是extends
,而在Kotlin中变成了一个冒号,写法如下:
class Student : Person(){var sNo=""var grade=0
}
构造函数
任何一个面向对象的编程语言都会有构造函数的概念,Kotlin中也有,但是Kotlin将构造函数分成了两种:主构造函数和次构造函数。
主构造函数将会是你最常用的构造函数,每个类默认都会有一个不带参数的主构造函数,当然你也可以显式地给它指明参数。主构造函数的特点是没有函数体,直接定义在类名的后面即可。比如下面这种写法:
class Student(val sno:String,val grade:Int) : Person(){}
这里我们将学号和年级这两个字段都放到了主构造函数当中,这就表明在对Student
类进行实例化的时候,必须传入构造函数中要求的所有参数。比如:
val student = Student("123", 2)
这样定义构造函数的话,如果我们需要再构造函数中写一些逻辑,那就需要用到Kotlin提供一个init构造体
class Student(var sno: String, var grade: Int) : Person() {init {println(eat())}
}
这样类的基本使用就差不多了