《浅谈Objective-C》


第一讲:类和对象

问题1.类与对象(抽象与具体)

类是具有一定特征和行为的事物的抽象,好比人类就是一个类,是一个具有自己特性或是行为的一个大集合,然而每个个体(称为对象)又是不同的 :你 我 他。也就是说,类是对象的类型,而对象是类的实例。

问题2.减号方法与加号方法

+alloc是一个+号方法也是一个类方法只能由类去调用。

-init是一个-号方法也是实例方法只能由对象去调用。

这两个方法的返回值都是,id类型的即通用的对象类型可以指向任何对象。

一.类

1.类的声明

在.h文件中声明类的格式:

@interface类名 : 父类名

{成员变量}成员方法

@end

例如:

@interface Person : NSObject

{

    @public         //可见度为公开

    int age;        //年龄

    NSString *name; //姓名NSString是字符串类型,NSString是一个

    int number;     //微信号

}

//- (返回值类型)方法名;

- (void)eat;        

- (void)sleep;

- (void)daDouDou;

- (void)sayHi;

@end

2.类的实现

在.m文件中实现类的格式:

@implementation类名


@end

【只要在.h中声明则必须在.m中实现】

例如:

@implementation Person

- (id)init//系统方法有系统声明 我们只需实现即可

{

    age = 22;

    number = 57;

    name = @"Micky";

    return self;//self代表自己是当前这个类的一个对象

   //self将消息发送给本类对象 super将消息发送给父类对象 

}

- (void)eat

{

    NSLog(@"Micky is Eating");

}

- (void)sleep

{

    NSLog(@"sleeping");

}

- (void)daDouDou

{

    NSLog(@"dadoudou");

}

- (void)sayHi

{

    NSLog(@"大家好,我今年%d,名叫%@", age, name);

    NSLog(@"hello Object-C");   

}

@end

二.对象

1.创建对象两步走:分配内存空间  +  对象初始化

1).分配内存空间 :[执行方法的目标执行的方法];

例如:

Person *p = [Person alloc];//用一个Person类型的指针指向分配的内存首地址

alloc方法开辟内存空间,将内存里面的所有值都归纳0,即将所有的成员变量的默认值都置成0或者null

2).对象初始化

p = [p init];  

或者两步连写(常用连写的方式创建对象)

Person *per = [[Personalloc] init];//执行顺序: 括号从里到外,等号从右到左

2.利用对象调用方法:[对象名 方法名];

[per sayHi];

[per eat];

[per sleep];

[per daDouDou];   

3.对成员变量操作

//当成员变量被@public可见度修饰的时候 可以使用->访问

per->age = 23;

per->name =@"mickymicky";

per->number = 200;

[per sayHi];  

4.获取成员变量的值

NSLog(@"年龄:%d", per->age);


第二讲:方法

.成员变量的可见度 : 系统默认为@protected[为保系统安全性常用默认的])修饰自己下方的所有成员变量,直到碰到另一个可见度修饰词

@public: 公开的所修饰的所有成员变量都可以在main.m中被访问[赋值/取值]

@protected:受保护的所修饰的成员变量不可以被外界访问

@private: 私有的所修饰的成员变量不可以被外界访问也不能被继承,@protected则可以

    //代码规范: _名字 -->表示不公开的

    NSString *_name;

    int _age;

    int _number;

    float _score;

    NSString *_sex;

二.带参数和返回值的方法:一个受保护的成员变量如果外界要访问 则需要这个类对外界提供两个方法

1.赋值方法 /setter方法

- (返回值类型)方法名:(参数类型)参数名;//方法名setNumber:

- (void)setNumber:(int)number;

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

- (void)setSex:(NSString *)sex;

- (void)setAge:(int)age;

- (void)setScore:(float)score;

2.取值方法 /getter方法:一定不要加get!!!!!!!!!

- (int)age;

- (NSString *)name;

- (int)number;

- (float)score;

- (NSString *)sex;

3.带多参的方法[但是只能返回单个值]

//方法名 setName:setAge:setNumber:setSex:setScore:

- (void)setName:(NSString *)name

         setAge:(int)age

      setNumber:(int)number

         setSex:(NSString *)sex

       setScore:(float)score;

4.带多个参数的初始化方法

必须是-号方法

返回值必须是id类型

如果自定义的初始化方法带有参数,则方法名必须以initWith开头

- (id)initWithAge:(int)age

          andName:(NSString *)name;

- (id)initWithNumber:(int)number

              andSex:(NSString *)sex

            andScore:(float)score;

完整的.h文件代码如下:

@interface Student : NSObject

{

    NSString *_name;

    int _age;

    int _number;

    float _score;

    NSString *_sex;

}

//取值

- (int)age;

- (NSString *)name;

- (int)number;

- (float)score;

- (NSString *)sex;

//赋值 三种 可任选

//1.

- (void)setNumber:(int)number;

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

- (void)setSex:(NSString *)sex;

- (void)setAge:(int)age;

- (void)setScore:(float)score;

//2.

- (void)setName:(NSString *)name

         setAge:(int)age

      setNumber:(int)number

         setSex:(NSString *)sex

       setScore:(float)score;

//3.

- (id)initWithAge:(int)age

          andName:(NSString *)name;

- (id)initWithNumber:(int)number

              andSex:(NSString *)sex

            andScore:(float)score;

@end

三.在.m文件中实现:

@implementation Student

- (int)age

{

    return _age;

}

- (NSString *)name

{

    return _name;

}

- (int)number

{

    return _number;

}

- (float)score

{

    return _score;

}

- (NSString *)sex

{

    return _sex;

}

- (void)setAge:(int)age

{

    _age = age;

}

- (void)setName:(NSString *)name

{

    _name = name;

}

- (void)setNumber:(int)number

{

    _number = number;

}

- (void)setScore:(float)score

{

    _score = score;

}

- (void)setSex:(NSString *)sex

{

    _sex = sex;

}


- (void)setName:(NSString *)name setAge:(int)age setNumber:(int)number setSex:(NSString *)sex setScore:(float)score

{

    _name = name;

    _age = age;

    _number = number;

    _sex = sex;

    _score = score; 

}

- (id)initWithAge:(int)age andName:(NSString *)name

{

    _age = age;

    _name = name;

    return self;

}

- (id)initWithNumber:(int)number andSex:(NSString *)sex andScore:(float)score

{

    _number = number;

    _sex = sex;

    _score = score;

    return self;

}

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值