NoteOc-05-属性构造函数

//main函数
//
//  main.m
//  NoteOc-05-属性构造函数
//
//  Created by 刘佳斌 on 15/11/23.
//  Copyright © 2015年 刘佳斌. All rights reserved.
//
/*
    属性:某种事物的特征

   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 *hero = [[Hero alloc]init];
//        [hero setName:@"wukong"];
//        [hero setPower:500];
//        [hero setBlood:1000];
//        [hero setDef:60];
//      .语法就叫做属性
   /*
        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 *hero = [[Hero alloc]initWithPower:100];
        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)(152.桂花(2000)(50003.梅花(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;
}
//Hua类
//.h文件
//
//  Hua.h
//  NoteOc-05-属性构造函数
//
//  Created by 刘佳斌 on 15/11/23.
//  Copyright © 2015年 刘佳斌. All rights reserved.
//

#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


//.m文件
//
//  Hua.m
//  NoteOc-05-属性构造函数
//
//  Created by 刘佳斌 on 15/11/23.
//  Copyright © 2015年 刘佳斌. All rights reserved.
//

#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
//Hero类
//.h文件
//
//  Hero.h
//  NoteOc-05-属性构造函数
//
//  Created by 刘佳斌 on 15/11/23.
//  Copyright © 2015年 刘佳斌. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Hero : NSObject
/*

//    名字 攻击力 血量 防御力
{
    NSString *_name;
    int _power;
    int _blood;
    int _def;
}

-(void)setName:(NSString *)name;
-(NSString *)name;

-(void)setPower:(int)power;
-(int)power;

-(void)setBlood:(int)blood;
-(int)blood;

-(void)setDef:(int)def;
-(int)def;


*/

@property NSString *name;  //等同于上边set get方法
@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


//.m文件
//
//  Hero.m
//  NoteOc-05-属性构造函数
//
//  Created by 刘佳斌 on 15/11/23.
//  Copyright © 2015年 刘佳斌. All rights reserved.
//

#import "Hero.h"

@implementation Hero
//系统的构造方法
/*
    1.self是自己的意思   用来替代初始化出来的对象
    2.super是超级的意思   表示父类
    3.id 表示一个泛型    只要是object类型都可以用id替代
      instancetype与id等价  但instancetype只限于构造函数
  */

-(id)init{
    //通过super(父类,超级类)找到创建一个对象的方法(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;
}



/*
-(void)setName:(NSString *)name{
    _name = name;
}
-(NSString *)name{
    return _name;
}

-(void)setPower:(int)power{
    _power = power;
}
-(int)power{
    return _power;
}

-(void)setBlood:(int)blood{
    _blood = blood;
}
-(int)blood{
    return _blood;
}

-(void)setDef:(int)def{
    _def = def;
}
-(int)def{
    return _def;
}
*/

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值