黑马程序员技术交流社区
标题:
继承中的强制类型转换
[打印本页]
作者:
15342193033
时间:
2014-12-28 09:39
标题:
继承中的强制类型转换
子类Dog中声明和实现-(void)run方法
{
NSLog(@"Dog run");
}
而父类Animal中没有声明和实现-(void)run方法
则main函数中:
{
Animal *aa = [Dog new];//这样写不行?需要强制类型转换?
[aa run];
}
所以main函数需要这样写:
{
Animal *aa = [Dog new];
Dog *dd =(Dog *)aa;//强制类型转换,这两句有点懵,这是谁换成谁啊???
[dd run];
}
作者:
zhaozigeng
时间:
2014-12-28 10:05
这代码想告诉我们的是,可以直接用基类指针指向派生类对象,不需要进行指针转换,
但是如果用基类指针初始化派生类指针,需要将基类指针转换成派生类的类型.
作者:
chasedream
时间:
2014-12-28 10:31
这是多态,为了避免出警告,所以强制转换。如果不强制转换也行,虽然能执行,但是会出警告。那是将父类指针类型的变量aa,强制转换成Dog *类型的变量,这样就能避免编译器出警告
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2