swift学习笔记之继承
来源:互联网 发布:java xbootclasspath 编辑:程序博客网 时间:2024/03/29 07:53
//继承1防止代码冗余2扩展功能//1继承的定义//2继承属性//3子类不仅可以继承父类的属性,还可以继承在属性中的添加的属性监视器class StepCounter { var totalSteps:Int=0 { //千万前面不能加lazy willSet(newTotalSteps) { print("新的值:\(newTotalSteps)") } didSet(old) { if (totalSteps > old) { print("与原来比增减了\(totalSteps - old)个值") } } }}class stepCounter:StepCounter {}let counter=stepCounter()counter.totalSteps=10counter.totalSteps=100//4下标脚本的继承class Sorce { var english:Int=130 var chinese:Int=50 var math:Int=90 subscript(index:Int)->Int { get { switch index { case 0: return english case 1: return chinese case 2: return math default: return 0 } } }}class childSorce: Sorce{}let myscore=childSorce()print(myscore[0])print(myscore[1])//5方法的继承//6继承的特点 在swift 中1>只支持单继承, 但一个父类可以多个子类,成树型结构2>不可以删除父类的属性//7重写//class NewClass { var value:Int {// ~~1计算属性 return 100 } class var classValue:Int { //~~~2重写类型属性 return 200 }}class NewClass1: NewClass { override var value:Int { return 333 } override class var classValue:Int { return 666 }}let cls = NewClass1()print(cls.value)print(NewClass1.classValue)// ~~~~3添加属性监视器class Car { var speed:Double=0.00}class AutomicCar: Car { var gear = 1 override var speed:Double { didSet { gear = Int(speed) print(gear) } }}let automic = AutomicCar()automic.speed=34.00automic.speed=6886.00// ~~~~~4重写下标脚本class childSorce111: Sorce{ var value=0 override subscript(index:Int)->Int { let count = index-value return count }}//~~~~~5重写方法//重写的注意事项//@1不可以省略override//@方法相同才能重写 ,父类没有的,怎么重写//8访问父类的成员// 1>访问属性 super.属性名// 2>访问下标脚本 suer[index]// 3>访问方法 super.方法名(参数名)// 4>访问类型属性//9防止重写// 将所有的属性,下标脚本,方法,类型属性 前面加一个 final (最终) 就可以达到防止子类重写了//10类型检查//类型检查是一种检查类实例的方式// 1> 类型检查 is // 用法 实例 is 子类型// @1,不能总是true// @2 实例是特定的子类型class ClassA {}class ClassA1:ClassA { var movie:String="hello"}class ClassA2:ClassA { var movie:String="hello"}class ClassA3:ClassA { var movie:String="hello"}class ClassA4:ClassA { var movie:String="hello"}class ClassB:ClassA { var movie:String="hello"}class ClassC {}let b = ClassB()if b is ClassB { //总是truseprint("true")}else {print("false")}let a = ClassA()if a is ClassC { //ClassC是基类 print("true")}else { print("false")}// 2 as//开发者希望程序在运行期间进行类型转换 ,这时就需要强制转化as 或者可选的类型检查符 as?// 实例 as 类型// >1强制类型的转换let bb=ClassB()let clsbb = bb as ClassBprint("clsbb.movie==\(clsbb.movie)")//注意 @1相同类型的实例:在一个要检查类型的数组只可以存相同的类型////let library = [ClassB(),ClassB(),ClassB(),ClassC()]////for item in library {//let cls = item as ClassB// print(cls)//}// @2不可以在条件语句使用// >2可选类型的转换 as?// 当不确定转换是否可以成功的时候,可以使用as?//AnyObject 和Any的检查//对于一些类型不明确的类型,swift 提供了两种类型别名来检查,分别是AnyObject 和Any//Any比AnyObject范围更广,除了方法类型let library1 = [ClassA1(),ClassA2(),ClassA3(),ClassA4()]for item in library1 {let cls = item as ClassA print(cls)}for item:AnyObject in library1 { let cls = item as! ClassA print(cls)}
0 0
- swift学习笔记之继承
- Swift学习之继承
- Swift学习笔记(十一)继承
- swift简单学习之继承
- 继承—Swift学习笔记(十六)
- swift学习笔记(12)- 继承
- 学习Swift笔记 (十五)Swift继承的用法
- Swift学习笔记之数据类型
- Swift 学习笔记之基础
- Swift学习笔记之函数
- Swift学习笔记之习题
- Swift学习笔记之枚举
- swift学习笔记之数据类型
- Swift学习笔记之初始化
- Swift学习笔记之数组
- Swift学习笔记之函数
- Swift学习笔记之枚举
- Swift学习笔记之基础知识
- JS弹出窗口窗口的位置和大小
- vim字符串替换及小技巧
- 打造炫酷进度条
- 函数配置器的举例
- 日期格式转换
- swift学习笔记之继承
- 深入解读Quartz的原理(以及Spring配置)
- Servlet 工作原理解析
- Spring IOC原理解读 面试必读
- android项目中context为空的问题解决
- ANDROID-当网络发生变化时使用BroadcastReceiver和service通知
- 文章标题
- POJ1001 Exponentiation【高精度乘方】
- 安装screenfetch