美文网首页
09-方法、下标、继承

09-方法、下标、继承

作者: SwordDevil | 来源:发表于2021-08-04 09:04 被阅读0次

一、方法(Method)

mutating

@discardableResult

二、下标(subscript)

sub  script
<sup> : 上标 -> 在左上角显示的数字
<sub> : 下标 -> 在右下角显示的数字

下标的细节

结构体、类作为返回值对比

接收多个参数的下标

三、继承(Inheritance)

内存结构

Animal是堆空间的对象 需要占用16个字节,最前面的8个字节用来放类型信息,再往后的8个字节放引用计数相关的东西,在往后才是放age的,而且还有个内存对齐,所以class Animal占32个字节
Dog继承子Animal,相当于把age直接拿到Dog内部,所以还是32个字节
同理,ErHa是把上面的拿到内部,所以是48个字节

重写实例方法、下标

重写类型方法、下标

但是子类的class可以替换成static

重写属性

  • 子类可以将父类的属性(存储、计算)重写为计算属性

  • 子类不可以将父类属性重写为存储属性

  • 只能重写var属性,不能重写let属性

  • 重写时,属性名、类型要一致

  • 子类重写后的属性权限不能小于父类属性的权限
    ->如果父类属性是只读的,那么子类重写后的属性可以是只读的、也可以是可读写的
    ->如果父类属性是可读写的,那么子类重写后的属性也必须是可读写的

重写实例属性

重写类型属性

属性观察器

final

  • 被final修饰的方法、下标、属性,禁止被重写
  • 被final修饰的类,禁止被继承

多态

/*
 多态的实现原理:
 1.OC:Runtime
 2.C++:虚表(虚函数表)
 
 Swift中多态的实现原理(比较偏向于C++)
 */

class Animal {
    func speak() {
        print("Animal speak")
    }
    func eat() {
        print("Animal eat")
    }
    func sleep() {
        print("Animal sleep")
    }
}

class Dog: Animal {
    override func speak() {
        print("Dog speak")
    }
    override func eat() {
        print("Dog eat")
    }
    func run() {
        print("Dog run")
    }
}

// 父类指针指向子类对象,多态
var anim: Animal
anim = Animal()
anim.speak()
anim.eat()
anim.sleep()

anim = Dog()
anim.speak()
anim.eat()
anim.sleep()
//anim.run()

相关文章

  • 09-方法、下标、继承

    一、方法(Method) mutating @discardableResult 二、下标(subscript) ...

  • 方法 下标 继承

    方法 在类型方法中 不能直接修改实例属性 mutating 默认情况下 值类型的属性不能被自身的实例方法修改 di...

  • Swift ~ 方法、下标、继承

    本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗...

  • 十一、 方法、下标、继承

    方法 什么是方法? 方法是关联了特定类型的函数类、结构体以及枚举都能定义实例方法,同时也都能定义类型方法 实例方法...

  • 10-方法、下标、继承

  • swift中的继承

    只有类支持继承 重写实例方法、下标 重写类型方法、下标 用class修饰的可以被重写 重写属性 1.重写实例属性 ...

  • interface List

    它继承了Collection接口并且扩展了基于下标的随机访问的方法 基于下标的添加 public void add...

  • Swift学习_继承、重写的综合例子

    分别继承属性、下标脚本、方法、属性带观察器、还有增加新属性和方法 使用方法 定义一个学生继承人类 定义了一个继承人...

  • Swift之继承、构造过程

    继承 在Swift中 ,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写这些方法,属性和下标脚本来优化或修...

  • Swift--属性、方法、下标、继承

    属性 存储属性 最简单情况下,作为特定类和结构体实例一部分的常量或者变量 常量结构体实例的存储属性 不能修改常量结...

网友评论

      本文标题:09-方法、下标、继承

      本文链接:https://www.haomeiwen.com/subject/uiwqvltx.html