继承、多态、动态类型和动态绑定

 

 

--------继承--------

 

  • 继承的概念作用于整个继承链
  • 没有父类的类位于类层次结构的最顶层,成为根(root)类。
  • 类的层次结构可以统称为子类和父类。也可以称为子类和超类。
  • 只要定义一个新类(不是一个新的根类),都会继承一些属性。例如,父类的非私有实例变量和方法都会成为新类的一部分。子类可以直接访问这些方法和实例变量。
  • 类的每个对象都拥有属于自己的实例变量,即使这些实例变量是继承来的。

 

 

 

向对象发送消息的规则:首先,检查该对象所属的类,查看在类中是否明确定义了一个具有指定名称的方法(唯一)。如果有定义,就会使用这个方法。 如果没有定义,就会去检查父类中是否有定义这个方法。有两种情况 (1.父类中存在这个方法,直接调用父类中方法的实现。 2.一直检查到根类中也没有这个方法,那么编译器就会报错。)

 

 

  • 可以通过继承来拓展,添加新的方法。但是,不能通过继承来删除或减少方法,但是可以利用覆写来更改继承方法的实现。

 

 

  • 抽象类:
    • 有时,创建类知识为了更容易的创建子类。因此,这些类名为抽象(abstract)类,或等价的成为抽象超类(abstract superclasses)。在该类中定义方法和实例变量,但不希望任何人从这个类中创建实例。
    • 抽象基类可以为部分方法提供默认的实现,可以定义字段属性,从而避免子类的重复实现,可提高代码的可重用性,这是抽象类的优势;而接口只能包含抽象方法。

 

 

--------多态--------

  • 多态能够使来自不同类的对象定义相同名称的方法。使不同的类共享相同方法名称的能力称为多态。
  • 多态能够让你可以开发一组类,这组类中的每一个类都能响应相同的方法名。每个类都可以根据不同需求拥有响应这个方法的独特代码,这就使得他独立于其他的类定义。多态还允许你以后添加新的类,这些新类能够响应相同的方法名。

 

 

--------动态绑定--------

  • Objective-C 系统总是跟踪对象所属的类。就是说,先判定对象所属的类,然后在运行时确定需要动态调用的方法,而不是在编译的时候。
  • 动态绑定是指程序直到执行时才能确定实际要调用的方法。

--------动态类型--------

 

  • 动态类型是指程序直到执行时才能确定所属的类。
  • 静态类型与动态类型的比较

 

    1. 编译期检查与运行时检查
    2. 静态类型在编译期就能检查出错误
    3. 静态类型声明代码可读性好
    4. 动态类型只有在运行时才能发现错误

 

 

--------静态类型--------

  • 将一个变量定义为特定类的对象时,使用的是静态类型。“静态”指的是对存储在变量中对象的类型进行显示声明。这样,存储在这种形态中的对象的类是预定义的,也就是静态的。
  • 使用静态类型时,编译器尽可能确保变量的用法在程序中始终保持一致。编译器能够通过检查来确定应用对于对象的方法是由该类定义的还是有该类继承的,否则它将显示警告信息。

 

 

  • id类型和指针:
    • id 是种通用数据类型,可以容纳指向任何类型对象的一种指针。
    • 指针是用于引用另一个对象或数据类型的值。指针在内存中作为特定对象或值的地址来实现。类的实例是一个指针,他指向内存中保存对象数据的位置。

转载于:https://www.cnblogs.com/fangjingjing/p/5869984.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值