SWIFT中的OOP
OOP(面向对象编程) ,这是一个由三个字母组成的神奇词,几乎所有现代编程语言都可以使用该词。 SWIFT和APPLE的流行语言与此没有什么不同。 OOP概念是SWIFT的基础。 我已经指出的是,许多开发人员未能关联OOP的概念。 并不是我们不了解OOP,只是我们无法关联应用程序。 因此,伙计们有时间以SWIFTY的方式重新审视基本的OOP概念。
糟糕,我们将与SWIFT一同推出…..地狱……!!!
好的,我们将以SWIFTY方式介绍以下OOP的基本概念:
- 班级
- 对象
- 物产
- 方法
- 访问控制
- 封装形式
- 抽象化
- 遗产
- 方法重载
- 方法重载
- 多态性
我不相信技术定义,而是会通过实现相同示例的iOS示例以更现实的方式理解这些概念。 我建议您在操场上尝试一下。 :]
类:
可以将类与某个特定项目或物体或生物所属的真实世界组进行比较,并且每个组都具有与该组中存在的相似的属性。 例如-将“人”视为一个小组或班级。 无论男女,每个人都有共同的属性和属性。
码:
类人{
//您的个人属性和能力可以在此处定义。
//如果你是吸血鬼,不要写;]
}
我们在这里做了什么:
我们宣布一堂课。
iOS示例:
iOS的主要UI类UIView可以视为一个类。
对象:
对象是您看到的来自特定类的任何东西。 例如,狗,猫,钢笔,铅笔等,一切都是物体。 从我们的“人物”示例中,男人和女人是属于同一类(即“人物”)的对象的示例。
码:
let man = Person() //我们创建了一个Person对象
我们在这里做了什么:
我们通过实例化创建了该类的对象。
iOS示例:
创建UITableView的出口时,我们将创建UITableView类的对象。
特性:
让我们再次回到前面的Person示例。 正如我之前所说的,每个人都具有一些共同的属性,特性和功能,而在所有群体中它们都是相同的,例如我们属于特定的性别,肤色,年龄等。因此,这些可以称为人的特性。类。
从技术上讲,类的属性是该类的公共属性,可以在派生自该对象的每个对象之间共享。
码:
类人{
// 1
var age:诠释! //这些是Person类的一些属性
var性别:字串!
var color:字符串!
var maritialStatus:字符串!
// 2
init(年龄:整数,性别:字符串,颜色:字符串,maritialStatus:字符串){
}
}
我们在这里做了什么:
- 我们声明了Person类的一些属性。
- 如果有人实例化了变量,我们将调用一个初始化方法来初始化变量(通过使用“ init”)。
iOS示例:
UIView类本身具有许多属性,例如。 框架,backgroundColor,isHidden等。
方法
方法或函数是类对象的行为。 假设一个人可以走路,唱歌,玩耍等等,而与任何物体(男人/女人)无关。 这些全都可以说是该类的方法/功能。
码:
在您的Person类中写下以下代码。
func play(sport:String){
//写下如何使人物实例播放。
}
我们在这里做了什么:
- 我们声明了Person类的属性,即play
iOS示例:
UIView类具有许多方法。 例如。 “ setNeedsLayout()”,如果我们要强制重置UI布局,则称为“ setNeedsLayout()”。
访问控制
Swift提供了许多方便的访问控制级别,这些级别在编写代码时非常有帮助。 SWIFT提供了一些访问级别:
- 开放访问和公共访问 -具有此访问级别的实体可以在其定义的模块内以及模块外进行访问。
- 内部访问 -具有此访问级别的实体可以被同一模块内的任何文件访问,但不能在其外部访问。
- 文件专用访问 -具有此访问级别的实体只能在定义的源文件中访问。
- 专用访问权限 —具有此访问权限级别的实体只能在定义的机柜中访问。
封装:
封装是一个概念,通过该概念我们可以隐藏外部干预和使用中的数据和方法。
码:
数学课{ // 1
// 2
让一个:诠释!
让b:诠释!
私人var结果:整数?
// 3
init(a:Int,b:Int){
self.a = a
self.b = b
}
// 4
func add(){
结果= a + b
}
// 5
func displayResult(){
打印(“结果-\(结果)”)
}
}
让计算=数学(a:2,b:3)
Calculation.add()
Calculation.displayResult()
我们在这里做了什么:
- 我们声明了一个Math类,该类完成了一些数学计算。
- 我们声明了输入值所需的两个变量。
- 初始化变量。
- 我们声明一个添加两个变量的方法
- 然后是另一种显示结果的方法。
在上面的示例中,我们使用访问说明符“ private”封装了变量“ result”。 我们从任何外部干预和使用中隐藏变量“结果”的数据。
摘要:
抽象是一个OOP概念,通过它我们公开对象的相关数据和方法,以隐藏其内部实现。
例如。 当我们去商店购买产品时,我们只会得到我们想要的产品。 店主没有告诉我们产品的购买方式。 我们可以将其视为抽象的示例。
在封装示例中,我们向用户展示displayTotal()和add()方法以执行计算,但隐藏了内部计算。
遗产:
继承定义为继承父项属性的过程。 从技术上讲,继承是子类继承其父类属性的过程。
码:
班级:人{ // 1
}
// 2
let andy = Men(年龄:2,性别:“ M”,颜色:“ White”,maritialStatus:“ M”)
print(andy.age) //打印2
我们在这里做了什么:
- 我们宣布了一个继承了Person类的子类Men。。。Ya当然是人。 等等,您还有其他想法吗! ;]
- 而且由于Men类继承自Person父类,因此它也可以像在代码中一样访问其属性。
iOS示例:
UIButton类继承自UIView,因此能够访问其属性,例如backgroundColor,frame等。
方法重载:
方法重载是一个过程,一个类具有两个或多个名称相同但参数不同的方法。
码:
在Person类中写下以下代码。 现在我们看到
func play(instrument:String){
}
现在我们有了两个带有不同参数的播放函数。 一个人既可以演奏音乐,也可以演奏乐器。 不能吗
方法覆盖:
覆盖是两个方法具有相同的方法名称和参数的过程。 一种方法在父类中,另一种在子类中。
码:
男子班{
覆盖init(年龄:整数,性别:字符串,颜色:字符串,maritialStatus:字符串){
//初始化男人
}
}
我们在这里做了什么:
由于Men继承自Person,因此我们可以覆盖Men类中的init方法,以便它对Men对象的行为以及对Person类对象的行为有所不同。
iOS示例:
创建UIViewController子类时,将覆盖UIViewController的viewDidLoad()方法。
多态性:
OOP使其成为英雄的重要方面之一是对象的行为。 相同类的对象可以在相同接口内独立运行。
码:
班级:人{
覆盖init(age:Int,color:String,maritialStatus:String){
性别=“男性”
}
}
CricketTeam类{
让团队:[男]!
init(team:[Men]){
self.team =团队
}
func play(){
团队成员{
//让每个玩家根据自己的能力进行比赛。
}
}
}
我们在这里做了什么:
我们创建了一个CricketTeam类。 并创建了一个男子团体实例。 之后,我们在团队中进行巡视,以检查每个球员并根据他们的能力让他们比赛。
使玩家,配置他们的能力并根据他们的能力使自己达到六四打是您的功课。
我们几乎每天的编码都围绕OOP的概念,它确实需要我们在其中具有强大的能力和创造力。 希望这次重访会很愉快。
我很想听到你的消息
您可以通过以下渠道与我联系,以获取任何查询,反馈或只是想进行讨论:
Twitter — @G_ABHISEK
领英
堆栈溢出
邮件
abhisekbunty94@gmail.com
为了立即连接
SkypeId — gabhisekbunty
请随时与您的其他开发人员分享。