我有两个子类SubClassA和SubClassB,它们都是ClassA的子类,它有一个名为someProperty的属性。 我想在if语句里面决定使用哪些子类,然后才能使用这个对象。
if(conditionA){
SubClassA *myObject;
}
else{
SubClassB *myObject;
}
myObject.someProperty=someValue;
这不起作用,因为我不能在if-else语句之外使用myObject。我怎么解决这个问题?是否有可能首先创建一个父对象,然后将其更改为属于一个子类?
答案 0 :(得分:5)
在父类的类型的封闭范围内声明变量。您可以在不使用强制转换的情况下将子类分配给其父类类型的变量。
SuperClass *myObject = nil;
if (a) {
myObject = [[SubClassA alloc] init...];
} else {
myObject = [[SubClassB alloc] init...];
}
myObject.someProperty=SomeValue;
当然,假设someProperty是在超类上声明的。否则我认为可能需要重新考虑此代码。