OC----动态类型和静态类型

动态类型和静态类型

8.1 OC是1门弱语言.
    编译器在编译的时候.语法检查的时候没有那么严格.不管你怎么写都是可以的
    int num = 12.12;
    优点: 灵活 咋个行都写.
    缺点: 太灵活
    强类型的语言: 编译器在编译的时候 做语法检查的时候 行就是行 不行就是不行.
 
8.2 静态/动态类型
    静态类型:指的是1个指针指向的对象是1个本类对象. 如: Person *p1  = [Person new];
    动态类型:指的是1个指针指向的对象不是本类对象.  如: Person *man = [Man new];
 
8.3 编译检查
    编译器在编译的时候,能不能通过1个指针去调用指针指向的对象的方法.
    判断原则: 看指针所属的类型之中是否有这个方法,如果有就认为可以调用,编译通过.如果这个类中没有,编译报错.这个叫做编译检查.
    在编译的时候 能不能调用对象的方法主要是看[指针的类型]. 可以将指针的类型做转换(强转),来达到骗过编译器的目的.
 
8.4 运行检查
    编译检查只是骗过了编译器. 但这个方法究竟能不能执行.运行时会去检查对象中是否真的有这个方法.如果有就执行,没有就报错.
 
8.5 LSP: 父类指针指向子类对象.实际上任意的指针可以执行任意的对象.编译器是不会报错的.
    当1个子类指针执行1个父类对象的时候,编译器运行通过子类指针去调用子类独有的方法.
    但是在运行的时候是会出问题的.因为父类对象中根本没有子类成员.
    如: Pig *p = @"jack";   [p eat];   //编译错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值