• Kotlin 开发Android app(八):Kotlin类对象class


    只要是面向对象的编程语言,基本上都有类Class的用法,只是好不好用,好不好记而已,面向对象是c++开始引入的,但是c++ 关于类的东西,弄的太复杂,其实在真正的项目中,很少用到非常多复杂的概念。

    Kotlin 是一种追求简洁的语言,在类上也下了不少功夫,放弃了很多c++ 中类非常复杂的概念,其实对于类可以这样来理解,为了复用的方便性和完整性,我们把变量和函数组合在一起,形成了类的概念。

    在这里插入图片描述

    类的初始化和使用

    Kotlin 中类的定义也是非常的简单的,没有太多的概念需要说明,对于类的定义更多的其实可以参考函数和变量。

    class AutoMobile(name:String) {
    
    
        init {
            println(name)
        }
    
        fun Driver(){
            println("前驱")
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    我们用class 定义了一个 AutoMobile 的类,这个类可以接受一个参数 name,类初始化的时候是从 init 开始的。

    对比与c++的语言,Kotlin 完成一个类是非常简单的,对于需要简单使用类的编程人员,是不需要了解 c++ 的构造函数,析构函数,就能完成一个类的编写。

    我们可以这样的使用他。

    
            var auto:AutoMobile = AutoMobile("大众")
    
            auto.Driver()
    
    • 1
    • 2
    • 3
    • 4

    像调用一个函数一样,我们初始化了 auto:AutoMobile ,带了一个name的参数。也许 c++ 顾忌得太多,才是类的用法变得非常的复杂。这里不需要public的声明,因为默认都是公开的,在写项目的时候,除非有一些特别的函数或者变量不让人知道以后,大部分的情况都是公开的。

    我一直都觉得,属性获取方法与设置方法 那是非常奇怪的一种编程方式,每次看到c# 或者 java代码中,一大堆 getxxxx(),setxxxx(),觉得都大可不必,这种编程方式只会耗尽程序员的心血,换不回来程序的可读性和稳定性。

    继承

    就有类有了这个继承的作用,才出现了这么多的设计模式,也可以说,它降低了程序设计的复杂度。但是类的继承,其实用好了,不是那么的简单。

    我们定义了一个Car的类,继承了AutoMobile

    class Car(name:String):AutoMobile(name) {
    
        init {
            println(name)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    被继承的,也继承了他的参数,这点确实有点意思,可以少写很多代码。AutoMobile代表的是基类,需要在前面声明一个关键字open`。

    当然 Kotlin 抽象类,关键字为abstract 和接口关键字为interface ,这里就不做详谈。

    小结

    面向对象的编程语言,就是有了对象,才是得大工程,大项目的组织方式变得越来越简单,使用好类可以设计出很好的代码框架,当然类的使用看起来简单,真正的要做好,做好框架并不是那么简单的。

  • 相关阅读:
    让业务满意的性能测试报告模板应该是怎样的?
    《C++设计模式》——结构型
    测试开发3——用例篇
    APM(应用性能监控)中,average、95percentile和99percentile分别代表以下含义
    MySQL数据库主从复制
    Centos安装Python、Anaconda、Pycharm的教程
    MyBatis 环境搭建配置全过程【IDEA】
    【阿旭机器学习实战】【7】岭回归基本原理及其λ的选取方法
    瞬态抑制二极管TVS的工作原理?|深圳比创达电子EMC(上)
    使用C#跨PC 远程调用程序并显示UI界面
  • 原文地址:https://blog.csdn.net/weixin_40425640/article/details/127846019