Swift实用小册12:Class类的继承

简介: 和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。这同时也是对自己学习Swift语言过程的知识整理。

image.png

在本章中,你将学会Class类的继承的使用方法。


前言


Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。

这同时也是对自己学习Swift语言过程的知识整理。

如有错误,以你为准。

继承的定义


Swift编程中,我们常常会定义一个方法类,然后将一些常用的方法放在类中,然后在实际业务中进行调用。

我们定义好的初始的方法在调用时,可能需要对调用的类的参数或者方法进行重写或者加以补充,这时候我们就需要使用到继承关系。

继承,一个类获取另一个类的方法或属性。

在继承的概念中,和JAVA类似,初始定义的类通用叫做父类,然后我们在实际业务中调用初始定义的类,继承初始的类的参数或方法,这样继承的类叫做子类

继承的使用


我们新建一个PlayGround文件,命名为SwiftInherit

首先,我们先定义一个父类,父类也可以叫做基类,也就是不继承其他类的类。

// 父类
class ViewModel {
    var appId: String = ""
    func gotoAppStore() {
        let urlPrex = "itms-apps"
        let appUrl = urlPrex + "://itunes.apple.com/app/id" + appId
        let appNsUrl = NSURL(string: appUrl)
        UIApplication.shared.open(appNsUrl! as URL, options: [:], completionHandler: nil)
    }
}

image.png

上述代码中,我们定义了一个ViewModel类,在类里,我们先声明了一个String类型的appId变量,并赋予了初始值。然后我们定义了一个gotoAppStore方法,这个方法之后我们会在子类中使用。

// 子类
class ToAppstore: ViewModel {
    override func gotoAppStore() {
        print("这里是子类继承的父类的方法")
    }
}

image.png

上述代码中,我们在已有的ViewModel类上创建一个新的类ToAppstore,用冒号的方法继承ViewModel类的属性和方法。

ToAppstore子类中又有一个gotoAppStore方法,所以我们需要使用关键字override来表示这个方法是父类的,且在子类中重写父类的方法gotoAppStore

这样的方式,父类的方法是不需要改变,我们只需要根据业务调整子类的方法就可以减少很多工作量。

继承的其他使用


继承中还有两个场景用法需要注意,一个是有时候我们定义好的父类的参数和方法是不能更改时,子类不能继承,只能调用父类使用。

//父类的私有方法
class Person {
    final func fullName() {
        print("完整的名字")
    }
}

image.png

上述代码中,我们定义了一个Person类,类里面有一个使用关键字final表明了不能被继承的方法fullName。这样Person类中的fullName方法是父类独有的方法,不能被子类继承。

上面的场景是私有方法的场景,在更上面我们使用override关键字,让子类可以继承父类定义的方法。

如果我们需要在子类继承和修改父类的属性改如何处理?

这就是我们要谈的第二个场景。

//父类
class Judgement {
    var isEnable:Bool {
        return true
    }
}

上述代码中我们定义了一个Judgement类,类里面声明了一个Bool类型的变量isEnable,它返回值为true

//子类重写属性
class Scene:Judgement {
    override var isEnable:Bool {
        return false
    }
}

上述代码中,我们基于Judgement父类创建了一个Scene子类,使用override关键字继承重写JudgementisEnable的属性,将isEnable属性值改为了false

另外值得注意的是,子类并不知道继承来的属性是存储属性的还是计算属性,它只知道继承来的属性会有一个名字和类型。

所以我们在重写一个属性时,必需将它的名字和类型都写出来。

image.png

以上就是本章的全部内容。

快来动手试试吧!

目录
打赏
0
0
0
0
74
分享
相关文章
Swift 是一种现代编程语言,支持面向对象编程(OOP),包括类、对象、继承、多态等核心概念
Swift 是一种现代编程语言,支持面向对象编程(OOP),包括类、对象、继承、多态等核心概念。通过这些特性,Swift 能够帮助开发者构建结构清晰、可维护性强的代码。本文介绍了 Swift 中 OOP 的基本概念、高级特性和实际应用,并通过一个简单的 `Car` 类示例展示了如何在 Swift 中实现面向对象编程。
32 1
|
2月前
|
Swift 泛型-关联类
Swift 泛型-关联类
28 1
Swift 中 struct(结构体)和 class(类)的区别
【10月更文挑战第10天】理解 struct 和 class 的区别对于正确使用 Swift 语言进行编程非常重要。在实际开发中,需要根据具体的需求和场景来选择合适的数据类型,以充分发挥它们的优势,提高代码的质量和效率。
|
2月前
|
Swift 继承
10月更文挑战第30天
30 0
Swift 类
10月更文挑战第29天
16 0
|
8月前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
49 0
【Swift开发专栏】Swift类的继承与多态
【4月更文挑战第30天】Swift中的OOP聚焦于类继承与多态,提供代码复用和类型安全。继承通过`class`和冒号实现,子类继承父类属性和方法,支持单继承以降低复杂性。多态借助协议和类型兼容实现,允许统一处理不同类型的对象。继承用于构建复杂类,多态则使代码更通用、可扩展。理解并运用这些概念对Swift开发者至关重要。
69 0
|
6月前
|
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
196 3
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
36 2
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
73 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等