欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-09 20:09:14
...

动态类型和静态类型

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];   //编译错
相关标签: OC