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

news2025/1/11 14:49:20

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

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

在这里插入图片描述

类的初始化和使用

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

class AutoMobile(name:String) {


    init {
        println(name)
    }

    fun Driver(){
        println("前驱")
    }

}

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

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

我们可以这样的使用他。


        var auto:AutoMobile = AutoMobile("大众")

        auto.Driver()

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

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

继承

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

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

class Car(name:String):AutoMobile(name) {

    init {
        println(name)
    }
}

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

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

小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文阅读:Practical Deep Raw Image Denoising on Mobile Devices

论文阅读: Practical Deep Raw Image Denoising on Mobile Devices 旷视 2020 ECCV 基于深度学习的降噪方法在近几年得到了大量的研究,这些方法的效果也霸榜了很多公开的数据集。不过这些方法用到的网络模型都很大,无法在手机端侧运行。这篇…

安装 DolphinDB Python API

1. 下载 whl 包 根据 CPU 架构、操作系统,从官方网站 pypi.org 下载对应的 Python API 安装包。 对应 x86_64, Python3.8 的包: 下载链接 2. pip 离线安装 pip install dolphindb-1.30.19.2-cp38-cp38-manylinux2010_x86_64.whl 3. 验证安装是否成…

数理天地杂志数理天地杂志社数理天地编辑部2022年第20期目录

数学基础精讲《数理天地》投稿:cn7kantougao163.com 函数定义域求法分析探讨 刘志勇; 2-3 不等式证明之极值点偏移问题探究 鲁媛媛; 4-5 利用导数突破函数的图象问题 王法金; 6-7 导数求解函数单调性的类型及分析 陈泓; 8-9 关注解三角形的一个常考…

JDK下载安装及环境配置

一、文章导读 随着互联网的日益发展, 越来越多的小伙伴加入了程序员这个行列, 也有很多小伙伴正计划学习编程, 学习Java 那么对于新手来说, 第一件事就是下载安装Java开发工具包, 也就是JDK, 今天我们就来一起详细的说说怎么操作 二、JDK版本描述 学习环境中, 我们通常…

诊所要使用微信预约系统,需准备哪些资料?

许多诊所想在自己的微信公众号里,做一个预约挂号的功能,但无论是做公众号预约系统,还是预约小程序,都需要具备以下几类资料: 营业执照 诊所为患者提供线上预约挂号功能,需要借助于微信企业服务号或者小程序…

什么是CRM系统?为什么现代企业都在使用?

如今市场竞争日益激烈,不少企业管理者通过各种方式,试图寻找一个合适并有效的解决方案,以此来帮助他们解决企业管理各种难题,让企业业绩不断提高,获得持续的成功。 而企业管理软件的出现填补了企业管理领域的空缺。从…

clickhouse 多维分析函数

前言 clickhouse的强大之处在于充分利用内存计算的高效性从而快速得到计算结果,尤其是对于一些需要做聚合分析、统计等场景下,clickhouse提供了一些按维度分析的函数,本文将介绍clickhouse常用的几类多维分析函数。 groupby函数 还记得在mys…

深入理解 Hive UDAF

1. 概述 用户自定义聚合函数(UDAF)支持用户自行开发聚合函数完成业务逻辑。从实现上来看 Hive 有两种创建 UDAF 的方式,第一种是 Simple 方式,第二种是 Generic 方式。 1.1 简单 UDAF 第一种方式是 Simple(简单) 方式,即继承 org.apache.hadoop.hive.ql.exec.UDAF 类,并…

[附源码]java毕业设计线上图书销售管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

R语言绘制柱形图系列

#EasyCharts团队出品&#xff0c; #如有问题修正与深入学习&#xff0c;可联系微信&#xff1a;EasyChartslibrary(ggplot2) #---------------------------单数剧系列柱形图----------------------------------------------------mydata<-data.frame(Cutc("Fair",…

2021年全国研究生数学建模竞赛华为杯A题相关矩阵组的低复杂度计算和存储建模求解全过程文档及程序

2021年全国研究生数学建模竞赛华为杯 A题 相关矩阵组的低复杂度计算和存储建模 原题再现&#xff1a; 一、问题背景   计算机视觉、相控阵雷达、声呐、射电天文、无线通信等领域的信号通常呈现为矩阵的形式&#xff0c;这一系列的矩阵间通常在某些维度存在一定的关联性&…

艾美捷Bio-Helix IRIS9 Plus预染蛋白ladder方案

艾美捷Bio-Helix IRIS9 Plus预染蛋白ladder(9条预染条带&#xff0c;15-180 kDa)是9种分子量为15至170kDa的预染色蛋白的组合。9种重组蛋白与蓝色发色团共价偶联&#xff0c;而1条15kDa的绿色带、一条70kDa的红色带和一条新设计的60kDa的孔雀绿色带作为参考带。IRIS9 Plus预拉伸…

轻量化网络 Mobilenet V1/V2/V3 学习记录

1. 传统卷积2. Mobilenet V12.1 Separable卷积2.2 整体结构3. Mobilenet V23.1 Relu3.2 逆残差3.3 整体结构4. Mobilenet V34.1 SE attention4.2 Switch激活函数5. Mobilenet V3 代码2016年直至现在&#xff0c;业内提出了SqueezeNet、ShuffleNet、NasNet、MnasNet以及MobileNe…

根目录挂载的/dev/mapper/centos-root分区扩容

iso&#xff1a;centos7.9 操作系统40G&#xff0c;我想用其中一块盘扩容给我的根目录 1. 新增一个分区&#xff0c;并将分区设置为物理卷 [rootmaster ~]# parted /dev/vdb GNU Parted 3.3 使用 /dev/vdb 欢迎使用 GNU Parted&#xff01;输入 help 来查看命令列表。 (…

IPD的商业实现过程

一、商业实现的主要流程 在传统的以产品为唯一中心的企业里,商业实现其实是产品实现的结果和表现。但随着企业外部影响商业结果的因素增多,随着产业链中更多的企业间协调机会和协同要求的出项,商业实现像产品实现一样具有实体性,也需要发现机会,需要制定计划,进行商业开发…

【Java 数据结构】栈与OJ题

篮球哥温馨提示&#xff1a;编程的同时不要忘记锻炼哦&#xff01;风在叙述它的阅历&#xff0c;树在书写它的温柔。 目录 1、什么是栈&#xff1f; 2、模拟实现一个栈 2.1 构造方法和成员属性 2.2 push 方法 2.3 pop 方法 2.4 peek 方法 2.5 empty 方法 3. 栈相关的OJ…

一次请求的来龙去脉 - Tomcat架构解析(一)

> Tomcat作为我们学习JavaEE的一个重要的web服务器&#xff0c;对整个请求的来龙去脉有所了解&#xff0c;将直接使得我们对JavaEE的学习更加的事半功倍。并且深入了解Tomcat架构设计之后&#xff0c;将使得我们在以后搭建自己的项目架构提供借鉴。那么接下来&#xff0c;我…

DOTA-PEG-葡萄糖 DOTA-葡萄糖

DOTA-PEG-葡萄糖 DOTA-葡萄糖 中文名称&#xff1a;葡萄糖-四氮杂环十二烷四乙酸 英文名称&#xff1a;Glucose-DOTA 别称&#xff1a;DOTA修饰葡萄糖&#xff0c;DOTA-葡萄糖 PEG接枝修饰葡萄糖 葡萄糖-聚乙二醇-四氮杂环十二烷四乙酸 DOTA-PEG-葡萄糖 纯度&#xff1a…

Vue--》简述组件的数据共享

目录 组件数据共享 父组件向子组件共享数据 子组件向父组件共享数据 兄弟组件共享数据 组件数据共享 组件之间的关系&#xff1a;在项目开发中&#xff0c;组件之间的最常用的关系分为两种&#xff1a;父子关系和兄弟关系。 父组件向子组件共享数据 通过自定义属性实现父…

进大厂必备的 Java 八股文大全(2022 最强精简易懂版)

很多同学会问 Java 面试八股文有必要背吗&#xff1f; 答案是&#xff0c;必须背&#xff0c;博主是个三本&#xff0c;今年凭借这篇八股文斩获了多个大厂暑期实习 offer&#xff0c;相信秋招一定也可以发挥重要作用。 你可以讨厌这种模式&#xff0c;但你一定要去背&#xf…