• Kotlin(六) 类


    目录

    创建类

    调用类 

    类的继承------open

    构造函数


    创建类

    创建类和创建java文件一样,选择需要创建的目录New→Kotlin File/Class

    Kotlin中也是使用class关键字来声明一个类的,这一点和Java一致。现在我们可以在这个类中加入字段和函数来丰富它的功能,这里我准备加入nameage字段,以及一个eat()函数,因为任何一个人都有名字和年龄,也都需要吃饭。

    1. class Person {
    2. var name = ""
    3. var age =0
    4. fun eat(){
    5. println(name+age+"岁,正在吃东西")
    6. }
    7. }

    调用类 

     Person类已经定义好了,接下来我们看一下如何对这个类进行实例化,代码如下所示:

    1. fun main() {
    2. val person =Person()
    3. person.age=10
    4. person.name="张三"
    5. person.eat()
    6. }

    Kotlin中实例化一个类的方式和Java是基本类似的,只是去掉了new关键字而已。之所以这么设计,是因为当你调用了某个类的构造函数时,你的意图只可能是对这个类进行实例化,因此即使没有new关键字,也能清晰表达出你的意图。Kotlin本着最简化的设计原则,将诸如new、行尾分号这种不必要的语法结构都取消了。

    上述代码将实例化后的类赋值到了person这个变量上面,person就可以称为Person类的一个实例,也可以称为一个对象。通过赋值,然后调用eat()函数。一个类的创建和调用就完成了。这也是最基本的面向对象的用法:就是要先将事物封装成具体的类,然后将事物所拥有的属性和能力分别定义成类中的字段和函数,接下来对类进行实例化,再根据具体的编程需求调用类中的字段和方法即可。

    类的继承------open

    创建一个Student类,加入snograde字段。

    1. class Student{
    2. var sNo=""
    3. var grade=0
    4. }

    在Java中,一个创建的类直接通过extends关键字就可以被继承,但是在Kotlin中是不行的,它默认创建的类无法被继承,需要通过关键字open

    1. open class Person {
    2. ...
    3. }

    加上open关键字之后,我们就是在主动告诉Kotlin编译器,Person这个类是专门为继承而设计的,这样Person类就允许被继承了。

    第二件事,要让Student类继承Person类。在Java中继承的关键字是extends,而在Kotlin中变成了一个冒号,写法如下:

    1. class Student : Person(){
    2. var sNo=""
    3. var grade=0
    4. }

    构造函数

    任何一个面向对象的编程语言都会有构造函数的概念,Kotlin中也有,但是Kotlin将构造函数分成了两种:主构造函数和次构造函数。

    主构造函数将会是你最常用的构造函数,每个类默认都会有一个不带参数的主构造函数,当然你也可以显式地给它指明参数。主构造函数的特点是没有函数体,直接定义在类名的后面即可。比如下面这种写法:

    1. class Student(val sno:String,val grade:Int) : Person(){
    2. }

    这里我们将学号和年级这两个字段都放到了主构造函数当中,这就表明在对Student类进行实例化的时候,必须传入构造函数中要求的所有参数。比如:

    val student = Student("123", 2)

    这样定义构造函数的话,如果我们需要再构造函数中写一些逻辑,那就需要用到Kotlin提供一个init构造体

    1. class Student(var sno: String, var grade: Int) : Person() {
    2. init {
    3. println(eat())
    4. }
    5. }

    这样类的基本使用就差不多了

  • 相关阅读:
    curl命令介绍
    订水商城H5实战教程-02系统登录
    实体链指(2)EL:Disambiguation-Only
    Java学习之封装
    Python【查重】
    【紫光同创国产FPGA教程】——【PGL22G第十章】DDR3读写实验例程
    python opencv图像模糊
    Navigation 组件(三) ViewModel,LiveData,DataBinding 组合使用
    React中为啥key不可以使用索引值index?(超详细版本)
    React实现生成及打印二维码
  • 原文地址:https://blog.csdn.net/pengguichu/article/details/132778110