首页/文章列表/文章详情

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

编程知识1802024-08-09评论

什么是面向对象编程 (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 = 1969println(c1.brand) // 输出 Fordprintln(c1.model) // 输出 Mustangprintln(c1.year) // 输出 1969

多个对象

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

示例

val c1 = Car()c1.brand ="Ford"c1.model ="Mustang"c1.year = 1969val c2 = Car()c2.brand ="BMW"c2.model ="X5"c2.year = 1999println(c1.brand) // Fordprintln(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 的对象并调用 myFunctionfun main() { val myObj = MyChildClass() myObj.myFunction()}

示例解释

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

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

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

最后

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

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

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

神弓

博客园

这个人很懒...

用户评论 (0)

发表评论

captcha