我学习Object-C中的收获总结(三)(四)



(三)

具体的来讲.h.m文件

.h里的@interface@end之间在一个大括号里创建类的实例变量

NSString *_name;

NSString *_gender;

NSString *_hobby;

int      _age;// 基础类型不用加*OC里的自定义类型都需要加*,与指针类似


.h文件里方法的声明:

上次说到了减号开头的是实例方法,加号开头的是类方法

- (void)go;

+ (void)eat;

函数名前面的小括号里是函数的返回值类型,后面也可以跟若干个参数,不过参数一定要有冒号

例:参数名前也要注明参数类型



.m文件里方法的实现:


- (void)go

{

    NSLog(@"我们走吧。");

}

+ (void)eat

{

    NSLog(@"一起聚聚,吃个饭。");

}

main文件里调用:

Person *person = [[Person alloc] init];

[person go];// 实例方法

[Person eat];// 类方法



(四)

实例变量的三种可见度:

@public:实例变量可以在外部或内部使用

@protected:实例变量是能在本类或它的子类中使用

@privaty:只能在本类中使用


实例变量的赋值与取值的方法(setget):

- (void)setName:(NSString *)name; // set后面紧跟你的实例对象名字(首字母大写,省略_),还要有一个传递的参数

- (NSString *)getName;// get方法命名规则也是一样,不过没有参数


- (void)setName:(NSString *)name// setter设置器

{

    _name = name;

}

- (NSString *)getName// getter访问器

{

    return _name;

}

每一对settergetter对应一个实例变量

main:

Person *person = [[Person alloc] init];

[person setName:@"李四"];

[person getName];

NSLog(@"%@", person->_name);



自定义初始化方法:

- (instancetype)initWithName:(NSString *)name;


- (instancetype)initWithName:(NSString *)name

{

    _name = name;

    return self;

}


main:

Child *child = [[Child alloc] init];

[child initWithName:@"李子"];



类的组合使用:

要引用某个类就得引入头文件,而这个类如果被别的类引入了并且在引用的类里创建了实例对象,被引用的类就要在自己的@interface前加上一个@class后面紧跟引用它的类名。避免了类的循环导入问题,否则编译器报错。






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值