首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Kotlin 面向对象编程 (OOP) 基础:类、对象与继承详解

编程知识
2024年08月09日 13:34

什么是面向对象编程 (OOP)?

OOP 代表面向对象编程。

过程式编程是编写执行数据操作的过程或方法,而面向对象编程则是创建包含数据和方法的对象。

与过程式编程相比,面向对象编程具有以下几个优势:

  • OOP 更快且更易于执行
  • OOP 为程序提供了清晰的结构
  • OOP 有助于保持 Kotlin 代码的 DRY 原则(“不要重复自己”),使代码更易于维护、修改和调试
  • OOP 使得创建可重用的完整应用程序成为可能,使用更少的代码和更短的开发时间

提示:“不要重复自己” (DRY - Don't repeat yourself) 原则旨在减少代码的重复。您应该将应用程序中常见的代码提取出来,放在一个地方重复使用,而不是一遍又一遍地编写相同的代码。

Kotlin - 什么是类和对象?

类和对象是面向对象编程的两个主要方面。

看看下面的示意图,了解类和对象之间的区别:

  • 水果

对象

  • 苹果
  • 香蕉
  • 芒果

另一个例子:

  • 汽车

对象

  • 沃尔沃
  • 奥迪
  • 丰田

因此,对象 的模板,而 对象 的实例。

当创建单个对象时,它们继承了类中的所有变量和方法。

Kotlin 类和对象

Kotlin 中,一切都与类和对象以及它们的属性和函数相关。例如:在现实生活中,汽车是一个对象。汽车有属性,例如品牌、重量和颜色;以及功能,例如驾驶和刹车。

就像是对象的构造器,或者说是创建对象的“蓝图”。

创建一个类

要创建一个类,请使用 class 关键字,并指定类的名称:

示例

创建一个包含一些属性(品牌、型号和年份)的 Car 类:

class Car {
  var brand = ""
  var model = ""
  var year = 0
}

属性基本上是属于类的变量。

重要提示:为了更好地组织代码,通常建议类的名称以大写字母开头。

创建一个对象

现在我们可以使用名为 Car 的类来创建对象。

在下面的示例中,我们创建了一个名为 c1Car 对象,然后使用点语法(.)访问 c1 的属性,就像我们访问数组和字符串的属性一样:

示例

// 创建 Car 类的 c1 对象
val c1 = Car()

// 访问属性并为其赋值
c1.brand = "Ford"
c1.model = "Mustang"
c1.year = 1969

println(c1.brand)   // 输出 Ford
println(c1.model)   // 输出 Mustang
println(c1.year)    // 输出 1969

多个对象

您可以创建一个类的多个对象:

示例

val c1 = Car()
c1.brand = "Ford"
c1.model = "Mustang"
c1.year = 1969

val c2 = Car()
c2.brand = "BMW"
c2.model = "X5"
c2.year = 1999

println(c1.brand)  // Ford
println(c2.brand)  // BMW

Kotlin 构造函数

我们创建了一个类的对象,并在类内部指定了属性,如下所示:

示例

class Car {
  var brand = ""
  var model = ""
  var year = 0
}

fun main() {
  val c1 = Car()
  c1.brand = "Ford"
  c1.model = "Mustang"
  c1.year = 1969
}

Kotlin 中,可以通过使用构造函数更快地完成此操作。

构造函数 就像一个特殊的函数,它通过在类名后面使用两个括号 () 来定义。您可以在括号内指定属性(就像向普通函数传递参数一样)。

构造函数会在您创建类的对象时初始化属性。只需记住指定属性/变量的类型即可:

示例

class Car(var brand: String, var model: String, var year: Int)

fun main() {
  val c1 = Car("Ford", "Mustang", 1969)
}

现在指定一个类的多个对象更加简单了:

示例

class Car(var brand: String, var model: String, var year: Int)

fun main() {
  val c1 = Car("Ford", "Mustang", 1969)
  val c2 = Car("BMW", "X5", 1999)
  val c3 = Car("Tesla", "Model S", 2020)
}

Kotlin 类函数

您还可以在类内部使用函数来执行某些操作:

示例

Car 类中创建一个 drive() 函数并调用它:

class Car(var brand: String, var model: String, var year: Int) {
  // 类函数
  fun drive() {
    println("Wrooom!")
  }
}

fun main() {
  val c1 = Car("Ford", "Mustang", 1969)
  
  // 调用函数
  c1.drive()
}

提示:当一个函数在类内部声明时,它被称为类函数或成员函数。

注意:当类的对象被创建时,它可以访问所有的类函数。

类函数参数

与普通函数一样,您可以向类函数传递参数:

示例

创建两个函数:drive()speed(),并向 speed() 函数传递参数:

class Car(var brand: String, var model: String, var year: Int) {
  // 类函数
  fun drive() {
    println("Wrooom!")
  }
  
  // 带参数的类函数
  fun speed(maxSpeed: Int) {
    println("最大速度是:" + maxSpeed)
  }
}

fun main() {
  val c1 = Car("Ford", "Mustang", 1969)
  
  // 调用函数
  c1.drive()
  c1.speed(200)
}

Kotlin 继承

Kotlin 中,可以从一个类继承类属性和函数到另一个类。我们将“继承概念”分为两类:

  • 子类 (child) - 继承自另一个类的类
  • 超类 (parent) - 被继承的类

在下面的示例中,MyChildClass(子类)继承了 MyParentClass 类(超类)的属性:

示例

// 超类
open class MyParentClass {
  val x = 5
}

// 子类
class MyChildClass: MyParentClass() {
  fun myFunction() {
    println(x) // x 现在从超类继承而来
  }
}

// 创建 MyChildClass 的对象并调用 myFunction
fun main() {
  val myObj = MyChildClass()
  myObj.myFunction()
}

示例解释

  • 使用 open 关键字修饰超类/父类,使该类可以被其他类继承属性和函数。
  • 要继承一个类,请指定子类的名称,后跟冒号 :,然后是超类的名称。

为什么以及何时使用“继承”?

  • 它对代码重用非常有用:在创建新类时,可以重用现有类的属性和函数。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

From:https://www.cnblogs.com/xiaowange/p/18350714
本文地址: http://shuzixingkong.net/article/941
0评论
提交 加载更多评论
其他文章 Python按条件删除Excel表格数据的方法
本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法~
Python按条件删除Excel表格数据的方法
Python 提取出SQL语句中Where的值的方法
本文简要介绍了Python中提取出SQL语句中Where的值的两种方法,分别是使用sqlparse库和使用正则表达式的方法,并给出了详细的代码示例,一目了然。
ComfyUI插件:ComfyUI_Noise节点
前言: 学习ComfyUI是一场持久战,ComfyUI_Noise是对ComfyUI中的噪声进行控制的一个插件库,该库可以完成图像噪声的反推,并通过采样再以几乎无损的方式返回原图,通过该库的使用可以更好的帮助图像恢复原始的相貌,非常适合在生成视频领域用作人物转绘使用。祝大家学习顺利,早日成为Comf
ComfyUI插件:ComfyUI_Noise节点 ComfyUI插件:ComfyUI_Noise节点 ComfyUI插件:ComfyUI_Noise节点
男人暗恋你时的身体语言:17个迹象,如何从肢体语言解读一个男人是否偷偷爱着你
约过几次会的对象,或是在公司跟你调情的万人迷同事是真的喜欢你吗?你需要化身侦探,从蛛丝马迹中挖掘出对方的感受,确认他是否也喜欢你。好在只要观察对方的肢体语言,以及他跟你的互动方式,就能做出有理有据的推测。一起来看看要留意哪些肢体语言,确认对方对你的感觉超出了朋友范围。
男人暗恋你时的身体语言:17个迹象,如何从肢体语言解读一个男人是否偷偷爱着你 男人暗恋你时的身体语言:17个迹象,如何从肢体语言解读一个男人是否偷偷爱着你 男人暗恋你时的身体语言:17个迹象,如何从肢体语言解读一个男人是否偷偷爱着你
零基础学习人工智能—Python—Pytorch学习(三)
前言 这篇文章主要两个内容。 一,把上一篇关于requires_grad的内容补充一下。 二,介绍一下线性回归。 关闭张量计算 关闭张量计算。这个相对简单,阅读下面代码即可。 print(" 关闭require_grad ") x = torch.randn(3, require
零基础学习人工智能—Python—Pytorch学习(三) 零基础学习人工智能—Python—Pytorch学习(三) 零基础学习人工智能—Python—Pytorch学习(三)
uniapp苹果开发用什么截屏
uniapp开发好苹果的app后,需要上架到app store connect后,用户才能使用app store进行安装。 在上架app store的过程中,却要求我们提供多种尺寸的app运行的设备截屏,截止于当前的版本,要6.7寸的、6.5寸的、5.5寸的,还有ipad 2代和4代13寸的。 这么
uniapp苹果开发用什么截屏
Digest Auth 摘要认证
1、该代码展示了使用Apache HttpClient库进行HTTP请求,并处理基于MD5的HTTP Digest认证的过程。 Digests类实现了MD5加密算法,HttpUtils类处理了GET、POST、PUT和DELETE方法的请求,包括设置请求头、生成授权信息和处理响应。 2、请求流程 2
Digest Auth 摘要认证
关于最近面试的一些心得
回来了一段时间,在某招聘App上陆续有一些人主动找上门,但是基本都是毫无针对性的询问对岗位是否有意向。也陆续投了一些公司的,但是基本都是石沉大海。 一些人跟我说现在大环境不好,招聘的岗位少。这种思维我不敢苟同,只能说很多企业自身经营都成问题,只是借大环境不好来掩盖真实的问题所在。 有一家公司很积极撮