他的赋值说:所有方法(包括属性)都由子类继承,无论它们是公共的还是私有的。如果你在子类中实现一个方法,你将覆盖超类的实现(如果有的话),无论该方法是公共的还是私有的。
为什么私有属性和方法(在实现文件中)也可以由子类继承。
我记得私有属性和方法在子类中是不可见的,子类不能使用超类的私有属性和方法。
给你一个更长的答案,包括你对Calebs答案的评论:
你误解了教程的作者想说什么。(我认为这不一定是你的错。
让我们举个例子:
有一个基类具有公共方法和私有方法。
@interface BaseClass : …
- (void)publicMethod;
@end
@implementation BaseClass
- (void)_privateMethod
{
…
}
- (void)publicMethod
{
…
[self _privateMethod];
…
}
@end
让我们有一个子类
@interface Subclass : BaseClass
- (void)doSomething;
@end
@implementation Subclass
- (void)doSomething
{
…
[self publicMethod];
…
}
@end
要知道,-publicMethod
是从BaseClass
继承而来的。因此,您可以向self
发送相应的消息。但-publicMethod
也向self
发出了信息。请记住:self
-publicMethod
仍然指向Subclass
的实例,即使它的源代码也在BaseClass
。因此[self _privateMethod]
是在 Subclass
的实例的上下文中执行的。有人可能会问,如果这可能,因为Subclass
对-_privateMethod
一无所知。是的,它是。
但是在Subclass
你不能使用_privateMethod
.
为什么私有属性和方法(在实现文件中)也可以由子类继承
因为给定类的每个实例也是该类的超类的实例。例如,每个UIView也是一个UIResponder和一个NSObject。如果子类只继承了其超类的某些方法和属性,则该类的实例将不是超类的完整且有效的实例。