首页 > 编程语言 > 详细

Swift 对象类型转换

时间:2015-08-28 15:35:15      阅读:251      评论:0      收藏:0      [点我收藏+]

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  欢迎加入  欢迎讨论问题



版权声明:本文为博主原创文章,未经博主允许不得转载。

Swift 对象类型转换

原文:http://blog.csdn.net/lwjok2007/article/details/48052513

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!