swift 对象类型转换
来源:互联网 发布:mac键盘大写灯不亮 编辑:程序博客网 时间:2024/06/05 08:55
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)
0 0
- Swift 对象类型转换
- swift 对象类型转换
- Swift类型转换
- 18.Swift-类型转换
- Swift-类型转换
- swift 类型转换
- Swift-类型转换
- swift 类型转换
- 细说Swift类型转换
- swift-9 类型转换
- Swift类型转换
- Swift AnyObject 类型转换
- swift-类型转换
- Swift 类型转换
- 获取对象类型(swift)
- Swift类型检查与转换
- Swift学习:2.18 类型转换
- Swift 学习笔记 - 类型转换
- UI界面-绝对布局
- 带checkbox的ListView实现(二)——自定义Checkable控件的实现方法
- 编程之美-24点游戏方法整理
- 盘点JavaScript里好用的原生API
- 带checkbox的ListView实现(三)——CheckableImageView的实现方法
- swift 对象类型转换
- MIPI-技术浅谈
- 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest G題 (线段树区间更新)
- IPsec 技术原理总结
- 第一个网页爬虫程序
- 关于虚拟Virtual DOM
- 怎么学习Java
- 如何添加 .PCH OR PREFIX.PCH 文件到 XCODE 6?
- swift 协议