恐怕有点像内比的问题。简而言之,如果我想知道是否创建对象的子类,我可以使用父类的实例来仅引用该对象的父类属性吗?如果是这样,我可以在子类和父类之间自由切换吗?
例如,如果我将 B 定义为 A 的子类型,其中 - A 有方法 a - B 有方法 b
我可以创建 B 的实例,然后将其作为对象类型 A 引用吗
排序:B *b1;乙*b2; 一个*一个;
b1 = [[B alloc] init];
// Is this allowed?
a = (A *)b1;
b2= (B *)a;
// Are these valid?
[ a a];
[ b2 a];
[ b2 b];
(我在网上看到了很多关于一般子类化的讨论,但似乎没有什么可以解释我什么时候可以在一个类和它的超类之间转换)