Swift 对象类型转换
发布时间:2020-12-14 01:52:11 所属栏目:百科 来源:网络整理
导读:Swift 中对象是可以转换的,因为面向对象就会涉及继承,子类,父类等等 有几点规则我们先说一下 子类对象可以直接转换为父类对象的 父类对象可以有条件的转换为子类对象,这个我们下边在讲 首先我们创建三个类 人 Homan 男人 Man 男孩 Boy Man 继承 Homan Bo
Swift 中对象是可以转换的,因为面向对象就会涉及继承,子类,父类等等 有几点规则我们先说一下 子类对象可以直接转换为父类对象的 父类对象可以有条件的转换为子类对象,这个我们下边在讲
首先我们创建三个类 人 Homan 男人 Man 男孩 Boy Man 继承 Homan Boy 继承 Homan
那么,就可说 Man 是 Homan 的子类 Boy 是 Homan的子类 Homan 是 Man的父类 Homan 是 Boy的父类
class Homan{ var name="" init(homanName:String){ name=homanName } //自我介绍 func Introduce(){ println("I'm Homan My name is (name)") } } class Man:Homan { var workName="" override func Introduce() { println("I'm Man My name is (name) My workname is (workName)") } } class Boy:Homan { var schoolName="" override func Introduce() { println("I'm Boy My My name is (name) schoolname is (schoolName)") } } 首先我们看 子类转为父类 //1,子类对象可以直接转换成父类对象(向上转型,直接转) var h:Homan=Man(homanName: "张三") h.Introduce() var h1:Homan=Boy(homanName: "小马") h1.Introduce() 接下来 我们讲子类转为父类 //2,父类对象转为子类对象 as! as? //父类对象转换为子类对象 需要使用as!(如果当前对象是父类对象,但是他如果是子类对象转化过来的,那么可以转化回去 var man1=h as! Man man1.workName="ios 开发" man1.Introduce() //如果要转化为子类对象,但是当前对象并不是这个子类对象转化过来的,那么会出现运行时错误:Could not cast value of type // var man2=h1 as! Man //如果我们需要将当前父类对象转为子类对象但是并不确定 当前对象是否为子类对象转化过来的,该如何处理? Swift为我们提供一个方法 as? if let a = h as? Man{ a.workName="iOS 测试" a.Introduce() }else{ println("非子类对象") } if let a = h1 as? Man{ a.workName="iOS 测试" a.Introduce() }else{ println("非子类对象") } 还有一种情况是 不知道当前对象是否为子类对象转为父类对象的 //3 如何判断某一个对象是不是这个类的对象 可以 使用 对象 is 类 来判断 //我们会发现判断子类对象是不是父类对象返回也是true println(h is Homan) println(h is Man) println(h is Boy)
好了 基本完成,有问题可以继续讨论 苹果开发群 :414319235 欢迎加入 欢迎讨论问题 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |