多态 ,
来源:互联网 发布:如何爬取网页的js脚本 编辑:程序博客网 时间:2024/06/09 21:02
建立父类Person类
person.h
#import <Foundation/Foundation.h>@interface Person : NSObject@property (nonatomic,copy)NSString *name;@property (nonatomic,retain)NSNumber *age;-(instancetype)initWithName:(NSString *)name age:(NSNumber *)age;+(Person *)personWithName:(NSString *)name age:(NSNumber *)age;@end
person.m
#import "Person.h"@implementation Person@synthesize name=_name;-(instancetype)initWithName:(NSString *)name age:(NSNumber *)age{ self=[super init]; if (self) { //使用点语法调用它的setter方法, //使之retain或者copy一下. self.name=name; self.age=age; } return self;}+(Person *)personWithName:(NSString *)name age:(NSNumber *)age{ Person *p=[[Person alloc] initWithName:name age:age]; //使用了autorelease释放对象. return [p autorelease];}//getter,setter,用实例变量 _name//dealloc 用实例变量 _name//初始化-(void)setName:(NSString *)name{ if (_name!=name) { [_name release]; _name=[name copy]; }}-(NSString *)name{ return [[_name retain] autorelease];}-(void)dealloc{ [_name release]; [_age release]; [super dealloc];}@end
子类Student继承Person
Student.h
#import "Person.h"@interface Student : Person@property (nonatomic,copy)NSString *stuNum;-(void)sayHi;-(instancetype)initWithName:(NSString *)name age:(NSNumber *)age stuNum:(NSString *)stuNum;+(Student *)stuWithName:(NSString *)name age:(NSNumber *)age stuNum:(NSString *)stuNum;@end
Student.m
#import "Student.h"@implementation Student@synthesize stuNum=_stuNum;-(void)dealloc{ [_stuNum release]; [super dealloc];}-(void)sayHi{ NSLog(@"hi");// [_stuNum release];// [super dealloc];}-(instancetype)initWithName:(NSString *)name age:(NSNumber *)age stuNum:(NSString *)stuNum;{ self=[super init]; if (self) { self.stuNum=stuNum; } return self;}+(Student *)stuWithName:(NSString *)name age:(NSNumber *)age stuNum:(NSString *)stuNum{ Student *s=[[Student alloc]initWithName:name age:age stuNum:stuNum]; return [s autorelease]; }@end
main.m里边
#import <Foundation/Foundation.h>#import "Person.h"#import "Student.h"int main(int argc, const char * argv[]){ @autoreleasepool { /* Person *p=[[Person alloc] init]; [p retain]; NSLog(@"%ld",[p retainCount]); NSArray *array=[[NSArray alloc] initWithObjects:p, nil]; NSLog(@"%ld",[p retainCount]); [array release]; NSLog(@"%ld",[p retainCount]); //当我们将一对象放入容器中的时候,该对象的计数+1. //当我们吧容器释放掉之后,容器中的对象引用计数全部-1 [p release]; [p release]; */ //父类指针指向子类对象 //多态 Person *stu=[Student stuWithName:@"wangxiaoer" age:@18 stuNum:@"110"]; stu.name=@"wangxiaoesa"; stu.age=@10;// [stu sayHi]; Student *s= (Student *)stu; s.stuNum=@"1230"; } return 0;}
0 0
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 一些常用可以做测试接口
- java中接口的定义与实现 Java中几种访问权限总结
- 使用U盘模拟软盘
- HDU 1060 Leftmost Digit (数论)
- pat1067 考察了逆向思维
- 多态 ,
- 笔记3_看张鹏老师html+css视频所得
- POJ2001 Shortest Prefixes(字典树)
- Sicily 1093 Air Express
- UVA - 10594 Data Flow (最小费用最大流)
- acm
- NSString的一些用法
- UIKeyBoard高度的监控
- 汇编中的pc的意思