构造方法;用来初始化对象的方法,是个对象方法。
重写构造方法的目的,为了让对象创建出来,成员变量就会有一些固定的值
构造方法init结构:
-(id)init{
self = [super init];
if(self)
{
//-------
}
return self;
}
下面举例说明重写构造方法的应用:
//士兵类
//----------------Soldier.h---------------------------
/#import
#import "Gun.h"
@interface Soldier : NSObject
@property Gun *gun;
-(void)fire;
@end
//------------------Soldier.m----------------------------
#import "Soldier.h"
@implementation Soldier
-(instancetype)init{
if(self = [super init])
{
Gun *gun = [Gun new];
_gun = gun;
}
return self;
}
-(void)fire{
[_gun shoot];
}
@end
//枪类
//-----------------------Gun.h---------------------------------
#import
@interface Gun : NSObject
@property int bulletCount;
-(void)shoot;
@end
//-----------------------Gun.m---------------------------------
#import "Gun.h"
@implementation Gun
-(void)shoot{
_bulletCount--;
NSLog(@"枪在凸凸凸凸射击,剩余子弹%d",_bulletCount);
}
-(instancetype)init{
if(self = [super init])
{
_bulletCount = 3;
}
return self;
}
@end
//--------------------------------main.m---------------------------------
#import
#import "Soldier.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Soldier *s = [Soldier new];
[s fire];
for (int i=0; i<</span>10; i++)
{
Soldier *s = [Soldier new];
[s fire];
[s fire];
[s fire];
}
}
return 0;
}
在这个程序中,我们知道如果没有重写构造方法,那么枪类实例化对象之后不会有子弹,士兵类实例化对象之后不会有枪。通过重写构造函数可以改变成员变量的一些固有属性,为我们编写程序提供了方便。 |
|