设为首页 加入收藏

TOP

Objective-C中的继承和多态(二)
2015-01-22 20:57:59 来源: 作者: 【 】 浏览:60
Tags:Objective-C 继承
式对象的描述,方便调试
?
//description
NSString *descript = [o2 description];
NSLog(@"%@", descript);
? ? ? ? 输出结果:
?
? ? ?9.-(NSUInteger) hash; 返回对象的哈希值;
?
?
//hash的用法
NSUInteger hash = [o2 hash];
NSLog(@"%p", hash);
? ? ? ? 输出结果:2014-07-30 11:40:35.685 HelloOC[1130:303] 0x100107b70
?
? ? ?10.-(BOOL) isEqual:(id)object; 比较两个对象是否相同,默认是使用地址进行比较的,且hash值一定要相同
?
?
//isEqual的用法
NSString *str1 = @"111";
NSString *str2 = str1;
if ([str2 isEqual:str1] == YES)
{
? ? NSLog(@"str2 == str1");
}
else
{
? ? NSLog(@"str2 != str1");
}
?
?
? ? ? ? ??Objective-C中的继承
?
? ? ? ? ?继承是is-a的关系,比如猫咪是一个动物,那么动物是父类,而猫咪是动物的子类。子类具有父类的属性和 行为,以及自身的属性和行为,也就是说“父类更一般,子类更具体”。用一个富二代的类来说明一下类的继承。
?
?1.先定义一个富人的类
?
? ? ? ? 代码说明:
?
? ? ? ? ? ? ? ? 1.声明访问权限为@protected的三个属性,分别为三个属性用@property加上getter和setter方法
?
? ? ? ? ? ? ? ? 2.并为该类创建便利初始化方法和便利构造器
?
? ? ? ? ? ? ? ? 3.为富人类定义一个刷卡方法
?
?
//
// ?Richer.h
// ?HelloOC
//
// ?Created by ludashi on 14-7-29.
// ?Copyright (c) 2014年 ludashi. All rights reserved.
//
?
#import
?
@interface Richer : NSObject
{
? ? @protected
? ? NSString *name;
? ? int age;
? ? NSString *gender;
?
}
?
//定义富人的姓名,年龄,性别,并为其提供getter和setter方法
@property (copy, nonatomic) NSString *name;
@property (assign, nonatomic) int age;
@property (copy, nonatomic) NSString *gender;
?
//定义便利初始化方法
-(id) initWithName : (NSString *)vName
? ? ? ? ? ? AndAge : (int)vAge
? ? ? ? ?AndGender : (NSString *)vGender;
?
//定义便利构造器
+(id) richerWithName : (NSString *)vName
? ? ? ? ? ? ? AndAge : (int)vAge
? ? ? ? ? ?AndGender : (NSString *)vGender;
?
//定义刷卡方法
-(void) poss;
?
@end
? ??
?
? ? 2.为富人类编写实现代码
?
? ? ? ? ? ? 代码说明:
?
? ? ? ? ? ? ? ? 1.用@synthesize实现getter和setter方法
?
? ? ? ? ? ? ? ? 2.实现便利初始化方法,用[ super init ]初始化富人类的直接父类,也就是NSObject
?
? ? ? ? ? ? ? ? 3.使用便利构造器返回实例化并初始化后的对象
?
#import "Richer.h"
@implementation Richer
//实现getter和setter方法
@synthesize name, age, gender;
//实现便利初始化函数
-(id) initWithName : (NSString *)vName
? ? ? ? ? ? AndAge : (int)vAge
? ? ? ? ?AndGender : (NSString *)vGender
{
? ? if (self = [super init])
? ? {
? ? ? ? self->name = vName;
? ? ? ? self->age = vAge;
? ? ? ? self->gender = vGender;
? ? }
? ? return self;
}
//实现便利构造器
+(id) richerWithName:(NSString *)vName
? ? ? ? ? ? ? AndAge:(int)vAge
? ? ? ? ? ?AndGender:(NSString *)vGender
{
? ? Richer *richer = [[Richer alloc] initWithName:vName
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?AndAge:vAge
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? AndGender:vGender];
? ? return richer;
}
//实现刷卡方法
-(void) poss
{
? ? NSLog(@"%@有钱你就刷吧", name);
}@end
?
?
? ? 3.编写富二代的类,富二代和富人有许多相似的属性和方法所以富二代继承于富人类,并添加相应的属性和方法,把需要重写的方法进行重写。
?
? ? ? ? ? ? 代码说明:
?
? ? ? ? ? ? ? ? 1.为富二代类添加新的爱好属性
?
? ? ? ? ? ? ? ? 2.为富二代添加新的方法
?
?
#import "Richer.h"
?
@interface Richer2nd : Richer
//Richer2nd继承啦Richer所有的方法
?
//为富二代添加新的属性
@property (copy, nonatomic) NSString *hobby;
?
?
//便利初始化函数
-(id) initWithName : (NSString *) vName
? ? ? ? ? ? AndAge : (int)vAge
? ? ? ? ?AndGender : (NSString *) vGender
? ? ? ? ? AndHobby : (NSString *)vHobby;
//为Richer2nd编写便利构造器
+(id)richer2ndWithName : (NSString *) vName
? ? ? ? ? ? ? ? AndAge : (int)vAge
? ? ? ? ? ? ?AndGender : (NSString *) vGender
? ?
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言中随机数相关问题 下一篇嵌入式系统C编程之错误处理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: