我觉得我错过了一些重要的东西。我正在为矩阵代数创建一个矩阵类作为抽象超类,该矩阵中的条目作为其子类具有不同的可能性。我的超类称为Matrix
,我的子类称为FractionMatrix
,其中的条目是Fraction
个对象。所以我有这个方便的构造函数:
+ (Matrix *)matrix { // creates an empty matrix object
return [[Matrix alloc] init];
}
如果在我的代码中我[FractionMatrix matrix]
,我会得到一个Matrix
对象而不是FractionMatrix
个对象。是否有一些编写此方法的方法,以便我不需要在子类中覆盖它 - 基本上是self
类?
虽然在这个非常简单的情况下简单地覆盖方法并不是很多工作,但是有更多实质的方法可以覆盖无意义的代码重复。