Objective c 我可以用我的子类实例化我的超类吗?
Objective c 我可以用我的子类实例化我的超类吗?,objective-c,subclass,superclass,objectinstantiation,Objective C,Subclass,Superclass,Objectinstantiation,deck是我的超类,playingCardDeck是我的deck子类。 我发现我可以用我的子类来实例化我的超类,这让我很困惑。 你能告诉我这方面的情况吗?将使用哪个init方法以及与此相关的任何其他功能。提前谢谢 #import "XYZViewController.h" #import "PlayingCardDeck.h" @interface XYZViewController () @property (weak, nonatomic) IBOutlet UILabel *flipLab
deck
是我的超类,playingCardDeck
是我的deck子类。
我发现我可以用我的子类来实例化我的超类,这让我很困惑。
你能告诉我这方面的情况吗?将使用哪个init
方法以及与此相关的任何其他功能。提前谢谢
#import "XYZViewController.h"
#import "PlayingCardDeck.h"
@interface XYZViewController ()
@property (weak, nonatomic) IBOutlet UILabel *flipLabel;
@property (nonatomic) NSUInteger flipCount;
@property (nonatomic) Deck *deck;
@end
@implementation XYZViewController
- (Deck *)deck
{
if (!_deck) {
_deck=[self createDeck];
}
return _deck;
}
- (Deck *)createDeck
{
return [[PlayingCardDeck alloc]init];
}
这一点也不奇怪。这是非常正常的OOP(正式名称为)。
Animal
类型的对象可以接受Dog
类型的对象。但是你只能在上面调用Animal
方法
在您的示例中,将执行
PlayingCardDeck
的init
。任何访问deck
的人都只能调用deck
上定义的方法,但实现将是由PlayingCardDeck
提供的,那么子类持有的实例变量呢?deck
可以访问它们吗?非常感谢。顺便问一下,你能给我推荐一本关于oc的书,里面详细介绍了这类事情(类、子类、继承)。我是oc的新手(甚至是OOP语言的新手)。非常感谢。非常感谢:)这不是真正的Objective-C;这就是面向对象编程(OOP)。实例将具有其所有属性。但是,任何具有组
类型变量的调用方都将无法访问不属于组
的任何内容。关于OOP有很多很好的介绍(大多数想法在OOP语言中是等效的)。(或者只需搜索“oop简介”)