? ? ? ? ? AndHobby : (NSString *)vHobby;
?
//添加hobby方法
-(void) myHobby;
?
@end
?
?
?
?
? ? 4.各种方法的实现
?
? ? ? ? ? ? 代码说明:
?
? ? ? ? ? ? ? ? ? ? 1.在编写便利初始化方法时利用super来调用父类的便利初始化方法来把继承到的父类的方法进行初始化
?
? ? ? ? ? ? ? ? ? ? 2.用self给新添加的属性进行初始化
?
#import "Richer2nd.h"
?
@implementation Richer2nd
//实现属性的getter和setter方法
@synthesize hobby;
?
//编写便利初始化函数,复用父类的便利初始化方法
-(id)initWithName:(NSString *)vName
? ? ? ? ? ?AndAge:(int)vAge
? ? ? ? AndGender:(NSString *)vGender
? ? ? ? ?AndHobby:(NSString *)vHobby
{
? ? if (self = [super initWithName:vName AndAge:vAge AndGender:vGender]) {
? ? ? ? self->hobby = vHobby;
? ? }
? ? return self;
}
?
//编写便利构造函数
+(id)richer2ndWithName:(NSString *)vName
? ? ? ? ? ? ? ? AndAge:(int)vAge
? ? ? ? ? ? ?AndGender:(NSString *)vGender
? ? ? ? ? ? ? AndHobby:(NSString *)vHobby
{
? ? Richer2nd *richer = [[Richer2nd alloc] initWithName:vName AndAge:vAge AndGender:vGender AndHobby:vHobby];
? ? return richer;
?
}
?
//重写刷卡方法
-(void)poss
{
? ? [super poss];
? ? NSLog(@"我是富二代,我爸有钱,我就刷!");
}
?
//添加新的方法
-(void) myHobby
{
? ? NSLog(@"我是富二代%@,我超喜欢%@", name, hobby);
}
?
?
@end
? ??
?
?
?
? ? 5.以下是上面代码的运行结果
?
?
2014-07-30 08:38:12.956 HelloOC[483:303] Bill有钱你就刷吧
2014-07-30 08:38:12.957 HelloOC[483:303] BILL`s son有钱你就刷吧
2014-07-30 08:38:12.958 HelloOC[483:303] 我是富二代,我爸有钱,我就刷!
2014-07-30 08:38:12.958 HelloOC[483:303] 我是富二代BILL`s son,我超喜欢飙车
?
?
?
?
?Objective-C中的多态
?
? ? ? ? ??多态简单的说就是对于不同对象响应同一个方法时做出的不同反应。在 OC中动态类型id是实现多态的一种方式,id是一个独特的数据类型,可以转换为任何数据类型,上面的富人和富二代可以这样定义
?
?
id richer = nil;
?
//测试富人类
richer = [Richer richerWithName:@"Bill" AndAge:40 AndGender:@"Man"];
[richer poss];
?
//测试富二代的类
richer = [Richer2nd richer2ndWithName:@"BILL`s son" AndAge:16 AndGender:@"男" AndHobby:@"飙车"];
[richer poss];
[richer myHobby];
? ? ?上面程序的输出结果和继承部分的结果是一致的;
?
? ? ?多态的另一个例子: Animal是父类,子类有Cat 和 Dog,子分别重写了父类中的eat方法;实例化对象的时候可以用下面的方法:
?
Animal *animal = nil;
?//实例化猫的对象
animal = [Cat new];
[animal eat];
?//实例化狗的对象
animal = [Dog new];
[animal eat];
?
?
?
? ? ?OCP : Open Closed Principle原则, 对扩展开放,对修改关闭
?
? ? ? ?LSP :里氏代换原则,任何基类可以出现的地方,子类一定可以出现。