DahuangPhoneiOSSwift → Swift中的面向对象的重写


  共有8722人关注过本帖树形打印复制链接

主题:Swift中的面向对象的重写

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
Swift中的面向对象的重写  发帖心情 Post By:2014/10/11 21:01:04 [只看该作者]

class Person{

    var name:String=""

    var age:UInt=0

    

    var printPerson:String{

        return name

    }

    

    init(name:String,age:UInt){


        self.name=name

        self.age=age

    }

    

    func aFunc(){

    

    }

    

    class func aStaticFunc(){

    

    }


    

    

}


class Child:Person{

    var height:UInt=0

    

    override var name:String{

    willSet{

        println("will set")

    }

    didSet{

        println("did set")

    }

    


    }

    

    override var age:UInt{

    get{

        return super.age

    }

    set{

        super.age=newValue>0 ? newValue:0

    }

    }

    

    override var printPerson:String{

        if super.age>20{

            return super.name

        }else{

            return "override var printPerson"

        }

    }

    

    init(name:String,age:UInt){

        self.height=0

        super.init(name:name,age:age)

        super.age=4  // 等价于 self.age=4


    }

    

    convenience init(height:UInt){

        self.init(name: "",age: 0)

        

    }

    

    override func aFunc(){   //重写方法

        

    }

    

    override class func aStaticFunc(){    //重写静态方法

        

    }

    

}


//属性重写可以为父类储存属性重写观察者属性,也可以将父类的存储属性在子类中以计算属性体现


//对于继承过来储存属性,子类只能进行计算,存储在父类那里


//在类以及类的属性、方法前面标注 final,时,表示这个类或者类的属性、方法,不能被重写


 回到顶部