Kotlin基础之面向对象编程

1. 类与对象

介绍
  • :类是对象的蓝图或模板,它定义了对象的属性和方法。
  • 对象:对象是类的实例,具有类的属性和方法。
使用
// 定义一个类
class Person {
var name: String = ""
var age: Int = 0
// 方法
fun introduce() {
println("Hello, my name is $name and I'm $age years old.")
}
}
// 创建一个对象
val person = Person()
person.name = "Alice"
person.age = 30
person.introduce() // 输出:Hello, my name is Alice and I'm 30 years old.

2. 继承与构造函数

继承介绍
  • 继承允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。
构造函数介绍
  • 构造函数用于初始化对象的状态。在 Kotlin 中,主构造函数是类头的一部分,而辅助构造函数(如果有)则使用 constructor 关键字定义。
使用
// 父类
open class Animal {
open fun sound() {
println("The animal makes a sound")
}
}
// 子类
class Dog : Animal() { // 继承自 Animal
override fun sound() { // 重写父类方法
println("The dog barks")
}
init { // 初始化块,类似于构造函数中的代码
println("Dog is initializing")
}
// 辅助构造函数
constructor(name: String) : this() { // 调用主构造函数
println("Dog's name is $name")
}
}
val dog = Dog("Buddy") // 输出:Dog is initializing 和 Dog's name is Buddy
dog.sound() // 输出:The dog barks

3. 接口

介绍
  • 接口定义了一组方法的规范,但不提供这些方法的实现。类可以实现一个或多个接口,从而承诺提供这些方法的实现。
使用
// 定义一个接口
interface Shape {
fun draw()
}
// 实现接口的类
class Circle : Shape {
override fun draw() {
println("Drawing a circle")
}
}
val shape: Shape = Circle() // 使用接口作为类型引用实现类
shape.draw() // 输出:Drawing a circle

4. 数据类

介绍
  • 数据类主要用于存储数据,它们的主要目的是提供一种简洁的方式来创建只包含数据的类。Kotlin 会自动为数据类生成一些常用方法,如 equals()hashCode(), 和 toString()
使用
data class PersonData(val name: String, val age: Int)
val personData = PersonData("Bob", 25)
println(personData) // 输出:PersonData(name=Bob, age=25)

5. 单例类

介绍
  • 单例类是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。
使用
object Singleton {
init {
println("Singleton is created")
}
fun doSomething() {
println("Singleton is doing something")
}
}
// 访问单例对象的方法
Singleton.doSomething() // 输出:Singleton is doing something

在 Kotlin 中,使用 object 关键字可以直接声明一个单例对象。这个对象在第一次被访问时创建,并且之后所有的访问都会返回这个唯一的实例。

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

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

相关文章

打印机里失败的任务删不掉的解决办法 斑马打印机更新电脑驱动和升级打印机固件 提示ribbon out 并黄状态亮+黄供应闪

强删打印任务 WinR services.msc 停止服务 Print spooler C:\Windows\System32\spool\PRINTERS 清空文件夹下所有文件 详细 要删除打印机里失败的任务,可以按照以下步骤操作: 停止打印服务:您需要停止Windows系统中的“Print Spooler”服…

VScode代码片段自动转图标

注:在VScode编辑器中,编辑html、vue等文件时,特定代码片段(token/xxx’等)自动转图标显示,按住“ctrl鼠标左键”还可跳转“https://icones.js.org/collections”,个人感觉干扰代码编写&#xff…

手把手教你写Java项目(1)——流程

个人练手项目的一般流程: 个人练手项目的流程通常相对简单和灵活,但仍然遵循一定的步骤来确保项目的顺利进行。流程相对较为详细,不是所有流程都要实现,一些仅供参考。主要是让大家对项目有初步的了解,不至于无法入手…

Android Compose 七:常用组件 Image

1 基本使用 Image(painter painterResource(id R.drawable.ic_wang_lufei), contentDescription "" ) // 图片Spacer(modifier Modifier.height(20.dp))Image(imageVector ImageVector.vectorResource(id R.drawable.ic_android_black_24dp), contentDescript…

Round-Robin 调度逻辑算法

Round-Robin 调度逻辑算法 1 Intro1.1 固定优先级1.2 Round-Robin算法 之前上学还是工作,都接触过调度算法:Round-Robin和weight-Round Robin算法,但只知道它的功能和目的是什么,没有具体了解如何实现的; 现在是工作上…

微信生态系统介绍

微信生态系统介绍 微信生态系统中,包含多种不同的工具和功能来满足用户和企业的不同需求。以下是关于微信小程序、公众号、订阅号、服务号、订阅通知和服务通知之间的关系及区别的详细介绍: 微信小程序 微信小程序是一种无需下载安装即可使用的应用&a…

maven聚合工程整合springboot+mybatisplus遇到的问题

前言(可以直接跳过看下面解决方法) 项目结构 两个module: yema-terminal-boot 是springboot项目,子包有:controller、service、dao 等等。属于经典三层架构。那么,该module可以理解为是一个单体项目&…

kafka-消费者组偏移量重置

文章目录 1、消费者组偏移量重置1.1、列出所有的消费者组1.2、查看 my_group1 组的详细信息1.3、获取 kafka-consumer-groups.sh 的帮助信息1.4、 偏移量重置1.5、再次查看 my_group1 组的详细信息 1、消费者组偏移量重置 1.1、列出所有的消费者组 [rootlocalhost ~]# kafka-…

监管端..

文章目录 1. 登录流程2. 日志AOP 1. 登录流程 使用账号(手机号)、密码、验证码。登录就是获取token的,输入的账号密码用RSA加密(非对称) 首先输入账号密码,在发送手机验证码时候先校验账号密码有没有输入…

私域如何高效管理多微信并实现聚合聊天?

在私域经营中,管理多个微信号是一项具有挑战性的任务。为了提高工作效率,辅助工具成为必不可少的一部分。而个微管理系统将为大家带来高效的多微信号管理体验,让大家能够更好地聚合聊天。 首先,个微管理系统提供了一个统一的界面…

【UML】-01-UML基本元素的介绍

1、UML的词汇表 (1)事物; (2)关系; (3)图。 事物是对模型中首要成分的抽象;关系把事物结合在一起;图聚集了相关的事物。 注:事物也称为元素 2…

微信小程序post请求

一、普通请求 wx.request({url: http://43.143.124.247:8282/sendEmail,method: POST,data: {user: that.data.currarr[0][that.data.mulu[0]] that.data.currarr[1][that.data.mulu[1]] that.data.sushe,pwd: 3101435196qq.com},header: {Content-Type: application/x-www-…

vivo X100 Ultra自称销售额破5亿,真实销量成谜?

文/张诗雨 5月28日9点,vivo 正式启动了其旗舰新机vivo X100 Ultra的全渠道销售工作。这款新机,早在5月13日就已正式亮相,并推出了三种存储容量的版本,分别是12GB256GB、16GB512GB以及16GB1TB,而相应的售价也不低&…

常见排序算法之选择排序

目录 一、选择排序 1.1 什么是选择排序? 1.2 思路 1.2.1 思路一 1.2.2 优化思路 1.3 C语言源码 1.3.1 思路一 1.3.2 优化思路 二、堆排序 2.1 调整算法 2.1.2 向上调整算法 2.1.3 向下调整算法 2.2 建堆排序 一、选择排序 1.1 什么是选择排序&#xf…

人工智能与区块链技术:开启未来科技的双引擎

在当今科技飞速发展的时代,人工智能和区块链技术如同两颗璀璨的明星,照亮了人类通往未来的道路。 人工智能,以其强大的学习和分析能力,正悄然改变着我们的生活。它能够处理海量的数据,为我们提供精准的预测和个性化的…

设计模式:外观模式 导诊台。空指针异常

文章目录 UML类图目录结构思路Register.javaOutpatientService.javaPrice.javaPharmacy.javaFacade.java空指针异常 Test.java UML类图 目录结构 思路 照着写,然后getRegister()方法的具体实现就是:打印一句话,然后到…

从 0 手撸一个 pytorch

背景介绍 最近抽空看了下 Andrej Karpathy 的视频教程 building micrograd,教程的质量很高。教程不需要任何前置机器学习基础,只需要有高中水平的数学基础即可。整个教程从 0 到 1 手撸了一个类 pytorch 的机器学习库 micrograd,核心代码不到…

Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比

🔥 个人主页:空白诗 文章目录 👋 引言📌 Vuex 基础知识核心构成要素示例代码 📌 Pinia 基础知识核心构成要素示例代码 📌 Vuex与Pinia的区别📌 使用示例与对比📌 总结 👋…

探索Solana链上DApp开发:高性能区块链生态的新机遇

Solana 是一个新兴的区块链平台,致力于为 DApp(去中心化应用程序)开发者提供高性能、低成本的解决方案。Solana 的独特之处在于其创新性的共识机制和高吞吐量的网络,使得开发者可以构建高度可扩展的 DApp,并为用户提供…

SpringBoot类属性”第二个字母大写“反序列化问题

1、原因 ”在SpringBoot默认序列化的情况下,Web请求的JSON字段包含首字母小写第二个字母大写的变量名无法解析(aName)“。这是由于SpringBoot默认采用Jackson作为序列化工具,Jackson要求遵循javabean的命名规则,第一个…