黑马程序员_OC封装

<封装1_set方法>

一、set方法

1.set方法的使用场合:
    @public的成员变量可以被随意赋值,应该使用set方法来管理成员的访问
(类似机场的安检、岁龙头过滤;过滤掉不合理的东西),比如僵尸的生命值不能为负值。
2.set方法的作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值。
3.set方法的命名规范:
 * 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写。
 * 形参名称不要跟成员变量同名。

二、封装set方法代码示例:

@interface Student : NSObject
{
	// @public 成员变量尽量不要用@public
	int age;
}

/*
 set方法:
 1.作用:提供一个方法给外界设置成员变量的值,可以在方法里面对参数进行相应过滤。
 2.命名规范:
	* 方法名必须以set开头
	* set后面跟上成员变量的名称,成员变量的首字母必须大写
	* 返回值一定是void
	* 一定要接收一个参数,而且参数类型跟成员变量类型一致
	* 形参的名称不能跟成员变量名一样
 */
- (void)setAge: (int)newAge;

- (void)study;

@end

@implementation Student

// set方法的实现
- (void)setAge: (int)newAge
{
	// 对传进来的参数进行过滤
	if (newAge <= 0)
	{
		newAge = 1;
	}

	age = newAge;
}

- (void)study
{
	NSLog (@"%d岁的学生在学习", age);
}

@end

int main()
{
	Student *stu = [Student new];
	// stu->age = 20;

	[stu setAge: 10];

	[stu study];

	return 0;
}


<封装2_get方法>

一、get方法

1.get方法的使用场合:
    @public的成员变量可以被随意赋值,应该使用get方法来管理成员的访问
(类似机场的安检、岁龙头过滤;过滤掉不合理的东西),比如僵尸的生命值不能为负值。

2.get方法的作用:返回对象内部的成员变量。

3.get方法的命名规范:get方法的名称一般就跟成员变量同名。

二、成员变量的命名规范

 * 成员变量都以下划线_开头
 * 可以跟get方法的名称区分开
 * 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量。


三、封装get方法代码示例:

@interface Student : NSObject
{
	// @public 成员变量尽量不要用@public
	int age;
}

/*
 set方法:
 1.作用:提供一个方法给外界设置成员变量的值,可以在方法里面对参数进行相应过滤。
 2.命名规范:
	* 方法名必须以set开头
	* set后面跟上成员变量的名称,成员变量的首字母必须大写
	* 返回值一定是void
	* 一定要接收一个参数,而且参数类型跟成员变量类型一致
	* 形参的名称不能跟成员变量名一样
 */
- (void)setAge: (int)newAge;

/*
 get方法:
 1.作用:返回对象内部的成员变量。
 2.命名规范:
	* 肯定有返回值:返回值类型肯定与成员变量的类型一致
	* 方法名跟成员变量名一样
	* 不需要接受任何参数
 */
- (int)age;

- (void)study;

@end

@implementation Student

// get方法的实现
- (int)age
{
	return age;
}

// set方法的实现
- (void)setAge: (int)newAge
{
	// 对传进来的参数进行过滤
	if (newAge <= 0)
	{
		newAge = 1;
	}

	age = newAge;
}

- (void)study
{
	NSLog (@"%d岁的学生在学习", age);
}

@end

int main()
{
	Student *stu = [Student new];
	// stu->age = 20;
	[stu setAge: 10];

	// NSLog (@"学生的年龄是%d岁", stu-age); // age成员变量是被保护的,无法直接访问

	NSLog (@"学生的年龄是%d岁", [stu age]);

	return 0;
}

<封装3_成员变量的命名规范>

成员变量的命名规范:一定要以下划线(_)开头
作用:
1.让成员变量和get方法的名称区分开。
2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量。

#import <Foundation/Foundation.h>

typedef enum {
	SexMan,
	SexWoman
} Sex;

@interface Student : NSObject
{	// 成员变量的命名规范:一定要以下划线(_)开头
	int _no;
	Sex _sex;
}

// sex的set和get方法
- (void)setSex: (Sex)sex;
- (Sex)sex;

// no的set和get方法
- (void)setNo: (int)no;
- (int)no;

@end

@implementation Student

- (void)setNo: (int)no
{
	_no = no;
}

- (int)no
{
	return _no;
}

- (void)setSex: (Sex)sex
{
	_sex = sex;
}

- (Sex)sex
{
	return _sex;
}

@end

int main()
{
	Student *stu = [Student new];

	[stu setSex: SexMan];
	[stu setNo: 10];

	[stu sex];
	[stu no];

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值