iOS之封装、继承和多态

作者: 萤火驻守心间 | 来源:发表于2022-03-15 09:06 被阅读0次

面向对象三大特性:封装、继承、多态

封装:对外公开接口,内部隐藏实现细节。可防止外界任意修改数据

继承:如果类与类之间存在逻辑关系,且有共用部分。即可抽取重复代码形成父类,子类拥有父类的成员变量和方法。如果类与类之间没有逻辑关系,可以将共同部分封装为单独的类,让其他类引用。
缺点:耦合性太强,子类与父类相互依赖
注意:
1.不允许子类和父类拥有相同的成员变量
2.每个类都有一个superClass指针指向其父类,每个对象都有一个isa指针指向类
3.调用方法会优先在当前类找,找不到就会继续到父类中找

多态:父类指针指向子类对象
优点:在需要使用父类类型时,可以传入父类、子类对象(例如方法传参为父类类型,既可传父类对象,也可传子类对象)

class Animal: NSObject {
    func animalRun() {
        print("animal run")
    }
}
class Dog: Animal {
    func dogrun(){
        print("dog run")
    }
}
func featuresTest(a: Animal) {
        guard let tem = object_getClass(a) else {
            return
        }
        print("isa:\(NSStringFromClass(tem)),superClass:\(class_getSuperclass(tem))")
    }

例如:

let dog = Dog()
let animal: Animal = Dog()
featuresTest(a: dog)
featuresTest(a: animal)

缺点:父类类型不能直接调用子类方法,必须强转为子类类型后才能调用。
注意:
1、程序运行时才会确定对象的真实类型
2、如果存在多态,父类可以转为子类类型,不存在则转不了

let dog = Dog()
let animal: Animal = Dog()
animal.animalRun()
(animal as! Dog).dogrun()

打印:
animal run
dog run

相关文章

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

  • iOS之封装、继承和多态

    面向对象三大特性:封装、继承、多态 封装:对外公开接口,内部隐藏实现细节。可防止外界任意修改数据 继承:如果类与类...

  • iOS复习之重写与重载

    iOS面向对象的三大特征 封装、继承、多态 Swift-重写与重载的使用和比较

  • 31-封装、继承、多态

    封装、继承、多态 面向对象编程有三大重要特征:封装、继承和多态。 继承 继承机制实现了代码的复用,多个类公用的代码...

  • iOS开发之一OC语言的特性

    三大特性:封装、继承、多态 一、封装(成员变量的封装) 二、继承 三、多态(多种形态)

  • iOS封装、继承、多态

    0、iOS中面向对象3个特征:封装、继承、多态 1、iOS不支持多重继承,需要用遵循多个协议来实现 2、面向对象的...

  • day09-Java面向对象三(多态/抽象类/接口)

    9.0 Java面向对象三大特性 封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的 多态概念:指...

  • java多态

    概述 面向对线的四个基本特征:抽象,封装,基础,多态。抽象,封装,继承是多态的基础,多态是抽象,封装,继承的表现 ...

  • java-多态的理解

    什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一...

  • 3.多态

    1.什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最...

网友评论

    本文标题:iOS之封装、继承和多态

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