1、NSObject 是所有类的基类(父类)。
利用多态原理 NSObject可以指向任何 对象。
NSObject *obj = [Animal new];
[(Animal*)obj run]; //动物在跑
NSObject *obj2 = [Dog new]; //狗在跑
[(Dog*)obj2 run];
2、id类型
id是一种通用的对象类型,它可以用来存储属于任何类的对象。 也可以理解为万能指针
注意 在id的定义中, 已经包好了 * 号。id 指针只能指向 os的对象
id类型应用场景
Animal *ani = [Animal new];
id obj3;// 声明id类型
obj3 = ani;
[obj3 run]; //动物在跑
Dog *dog = [Dog new];
obj3 =dog;
[obj3 run]; //狗在跑
动态类型和静态类型
动态类型: 程序直到执行时才能确定所属的类。 id属于动态类型
静态类型:将一个变量定义为特定类的对象时,使用的是静态形态 例如 Animal *ani = [Animal new];
|
|