Swift实用小册12:Class类的继承
【摘要】 在本章中,你将学会Class类的继承的使用方法。前言和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。这同时也是对自己学习Swift语言过程的知识整理。如有错误,以你为准。继承的定义在Swift编程中,我们常常会定义一个方法类,然后将一些常用的方法放在类中,然后在实际业务中进行调用。我们定义好的初始的方...
在本章中,你将学会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)
}
}
上述代码中,我们定义了一个ViewModel类,在类里,我们先声明了一个String类型的appId变量,并赋予了初始值。然后我们定义了一个gotoAppStore方法,这个方法之后我们会在子类中使用。
// 子类
class ToAppstore: ViewModel {
override func gotoAppStore() {
print("这里是子类继承的父类的方法")
}
}
上述代码中,我们在已有的ViewModel类上创建一个新的类ToAppstore,用冒号的方法继承ViewModel类的属性和方法。
在ToAppstore子类中又有一个gotoAppStore方法,所以我们需要使用关键字override来表示这个方法是父类的,且在子类中重写父类的方法gotoAppStore。
这样的方式,父类的方法是不需要改变,我们只需要根据业务调整子类的方法就可以减少很多工作量。
继承的其他使用
继承中还有两个场景用法需要注意,一个是有时候我们定义好的父类的参数和方法是不能更改时,子类不能继承,只能调用父类使用。
//父类的私有方法
class Person {
final func fullName() {
print("完整的名字")
}
}
上述代码中,我们定义了一个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关键字继承重写Judgement中isEnable的属性,将isEnable属性值改为了false。
另外值得注意的是,子类并不知道继承来的属性是存储属性的还是计算属性,它只知道继承来的属性会有一个名字和类型。
所以我们在重写一个属性时,必需将它的名字和类型都写出来。
以上就是本章的全部内容。
快来动手试试吧!
如果本专栏对你有帮助,不妨点赞、评论、关注~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)