多态
举个例子:有个父类Animal类,子类Dog类,我们定义一个Dog对象可以这样Dog *d = [Dog new];这是很简单的。
但是我们也可以这样定义Animal *a = [Dog new];,这种语法现象就是多态,用语言描述就是父类指针指向子类对象。
对于这种语法Animal *a = [Dog new];我们可以这样通俗的理解:狗是动物。当Dog中重写了一个run方法时,我们去调用他
[a run];由于a指向了Dog对象,所以在调用方法时会动态监测run到底是谁的方法。
多态的好处是当形参是父类指针时,传值时可以根据需要将不同的子类指针传进去,这样节约代码。举个例子:
void run(Animal *a)
{
NSLog(@"pao");
}
在调用时:
Dog *d = [Dog new];
void(d);
同样如果还有别的子类如Cat也可以这样操作。 |
|