Swift学习笔记十三:继承

一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性

一、基本语法

class Human{
    var name :String
    init(){
        name = "human"
        println(name)
    }
    func description(){
        println("name:\(name)")
    }
}
class Student:Human{
    var score = 0
    init(){
        super.init()
        name = "Student"
        println(name)
    }
    override func description(){
        super.description()
        println("score:\(score)")
    }
}

重点:
     ① 和Objective-C一样,继承一个类就是在定义的时候将父类名写在后面 class  Student: Human
     ② 继承类之后,会继承父类的所有属性和方法,要想重写父类的方法和属性,需要使用 override 关键字
     ③ 对于 init () 方法,重写不需要使用 override  
     ④ 访问父类的方法需要使用关键字 super ,如: super . description ()

二、重写属性和添加观察器

class Human{
    var name :String
    init(){
        name = "human"
    }
    func description(){
        println(name)
    }
}
class Student:Human{
    override var name:String{
    willSet{
        println("will set \(newValue)")
    }
    }
    override func description()
    {
        println("Student name:\(name)")
    }
}
var a = Student()
a.name = "小笨狼"      //输出:will set 小笨狼
a.description()       //输出:Student name:小笨狼

重点:
     ① 对于类的属性,也可以重写
     ② 重写属性时可以添加观察器
     ③ 不能为常量储存属性和只读计算属性添加观察器,因为他们都是不可改变的

三、防止继承或重写
     如果不想让某个类被继承,或者不想让某个属性或方法被重写,可以使用 final 关键字

@final class Human{ //① 在class前加@final,此类将不可被继承
    @final var name :String //② 在属性前加@final,属性将不可被重写
    init(){
        name = "human"
    }
    @final func description(){  //③ 在方法前加@final,方法将不可被重写
        println(name)
    }
}

重点:
        class 前加 @final ,此类将不可被继承,否则编译器会报错
            ②   在属性前加 @final ,属性将不可被重写,否则编译器会报错
        在方法前加 @final ,方法将不可被重写,否则编译器会报错





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值