/*
属性:某种事物的特征
setter:设置者
- (void)setName:(NSString *)name;
getter:获取者
-(NSString *)name;
setter:公式:
-(void)set属性名:(属性类型)形参名;
getter:公式
-(属性类型)属性名;
点语法(.)又叫属性,可以通过 . 给属性赋值 取值
属性公式:
在.h文件中 @property 属性的类型 属性名
以前的时候 需要在.m文件中写上@synthesize
@property 表示声明属性方法
@synthesize 表示实现属性方法
现在@synthesize既包含声明,也包含实现
构造方法:又叫init方法,用来创建一个对象
自定义构造方法:
1.公式:
-(id)initWith要初始的变量名:(数据类型)形参名
{
self = [super init];
if(self){
}
return self;
}
2.本质:就是一个有参数有返回值的方法,但是自定义构造函数有特殊意思,表示是创建一个对象的方法
标示它有特殊意义的符号
(1)方法名 必须用initWith作为方法的开头,并且W大写
(2)方法实现的公式
self = [super init];
if (self) {
}
return self;
注意:1.initWith的W必须大写
2.自定义构造方法要在.h中声明
?为什么要使用属性 自定义构造方法
目的都是为了传值
只要是正向传值,属性随时都可以使用
自定义构造方法也是正向传值,但只能在初始化的时候使用
***** 变量名不能重名 方法名也不能重名
*/
#import <Foundation/Foundation.h>
#import "Hero.h"
#import "Hua.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*
hero.name = @"悟空";
hero.power = 500;
hero.blood = 1000;
hero.def = 60;
NSLog(@"英雄名字为%@,攻击力为%d,血量为%d,防御为%d",hero.name,hero.power,hero.blood,hero.def);
*/
/*
花类:品种,颜色,价格,气味
1.玫瑰花 2.桂花 3.梅花
Hua *meiGuiHua = [[Hua alloc] init];
meiGuiHua.name = @"玫瑰花";
meiGuiHua.color = @"红色";
meiGuiHua.price = 50;
meiGuiHua.smell = @"玫瑰花香";
NSLog(@"花名为%@,%@,价格%d,具有%@",meiGuiHua.name,meiGuiHua.color,meiGuiHua.price,meiGuiHua.smell);
Hua *guiHua = [[Hua alloc] init];
guiHua.name = @"桂花";
guiHua.color = @"白色";
guiHua.price = 30;
guiHua.smell = @"桂花香";
NSLog(@"花名为%@,%@,价格%d,具有%@",guiHua.name,guiHua.color,guiHua.price,guiHua.smell);
Hua *meiHua = [[Hua alloc] init];
meiHua.name = @"梅花";
meiHua.color = @"白色";
meiHua.price = 60;
meiHua.smell = @"梅花香";
NSLog(@"花名为%@,%@,价格%d,具有%@",meiHua.name,meiHua.color,meiHua.price,meiHua.smell);
Hero *shuaiYingXiong = [[Hero alloc]init];
NSLog(@"%@ %d",shuaiYingXiong.name,shuaiYingXiong.power);
Hero *shuaiHero = [[Hero alloc]initWithName:@"帅帅" andPower:100 andBlood:98 andDef:60];
NSLog(@"%@ %d %d %d",shuaiHero.name,shuaiHero.power,shuaiHero.blood,shuaiHero.def);
Hero *hero = [[Hero alloc]init];
*/
/*
花类:品种,颜色,价格,气味
1.玫瑰花(2)(15) 2.桂花(2000)(5000) 3.梅花(100)(400)
做:1.属性定义
2.在初始化花得时候使用自定义构造方法
3.使用属性修改价格
*/
/*
NSArray *flowerDatas = @[@{@"name":@"玫瑰",@"price":@2,@"color":@"红色",@"flavour":@"很香"},@{@"name":@"桂花",@"price":@2000,@"color":@"黄色",@"flavour":@"漫天香"},@{@"name":@"梅花",@"price":@100,@"color":@"红色",@"flavour":@"不是很香"}];
NSMutableArray *flowers = [NSMutableArray array];
for (NSDictionary *info in flowerDatas) {
Flower *flower = [[Flower alloc]initWithName:info[@"name"] price:[info[@"price"] intValue] color:info[@"color"] flavour:info[@"flavour"]];
NSLog(@"%@平时卖%d",flower.name ,flower.price);
[flowers addObject:flower];
}
NSArray *changePrice = @[@15,@5000,@300];
for (int i=0;i<flowerDatas.count;i++) {
Flower *flower = flowers[i];
flower.price = [changePrice[i] intValue];
NSLog(@"情人节%@ 卖%d",flower.name,flower.price);
}
*/
NSArray *huaDatas = @[@{@"name":@"玫瑰",@"color":@"红色",@"price":@2,@"smell":@"很香"},@{@"name":@"桂花",@"color":@"黄色",@"price":@2000,@"smell":@"漫天香"},@{@"name":@"梅花",@"color":@"红色",@"price":@100,@"smell":@"不是很香"}];
NSMutableArray *huas = [NSMutableArray alloc];
for (NSDictionary *info in huaDatas) {
Hua *hua = [[Hua alloc]initWithName:info[@"name"] andColor:info[@"color"] andPrice:[info[@"price"] intValue] andSmell:info[@"smell"]];
NSLog(@"平时%@卖%d",hua.name,hua.price);
[huas addObject:hua];
}
}
return 0;
}
#import <Foundation/Foundation.h>
@interface Hua : NSObject
@property NSString *name;
@property NSString *color;
@property int price;
@property NSString *smell;
- (instancetype)initWithName:(NSString *)name andColor:(NSString *)color andPrice:(int)price andSmell:(NSString *)smell;
@end
#import "Hua.h"
@implementation Hua
- (instancetype)initWithName:(NSString *)name andColor:(NSString *)color andPrice:(int)price andSmell:(NSString *)smell
{
self = [super init];
if (self) {
_name = name;
_color = color;
_price = price;
_smell = smell;
}
return self;
}
@end
#import <Foundation/Foundation.h>
@interface Hero : NSObject
@property NSString *name;
@property int power;
@property int blood;
@property int def;
- (instancetype)initWithPower:(int)power;
- (instancetype)initWithName:(NSString *)name andPower:(int)power andBlood:(int)blood andDef:(int)def;
@end
#import "Hero.h"
@implementation Hero
-(id)init{
self = [super init];
if(self){
_name = @"立广";
}
return self;
}
- (instancetype)initWithPower:(int)power
{
self = [super init];
if (self) {
_power = power;
_name = @"asghoa";
}
return self;
}
- (instancetype)initWithName:(NSString *)name andPower:(int)power andBlood:(int)blood andDef:(int)def
{
self = [super init];
if (self) {
_name = name;
_power = power;
_blood = blood;
_def = def;
}
return self;
}
@end