黑马程序员技术交流社区
标题: OC基础匿名对象属性封装个人笔记 [打印本页]
作者: muyan091115 时间: 2016-5-25 22:45
标题: OC基础匿名对象属性封装个人笔记
1,我们之前创建对象的做法
Person *p1 = [Person new];
让一个指针指向一个对象 这个指针就叫做这个对象的名字
2,匿名对象
就是没有名字的对象
[Person new]
没有指针指向这个对象 这个对象就叫做匿名对象
3,如何去使用一个匿名对象呢
[Person new]->_name = @"jack";
[[Person new] sayHi];
因为new实际上1个类方法,这个方法做的事情创建对象(4个步骤)
[Person new]这句话的结果就是这个匿名对象的地址,可以直接使用。
4,注意点
1),匿名对象只能使用一次
下一次再[Person new]的话是一个新的匿名对象
2),每次创建的匿名对象都是不同的对象
5,匿名对象什么时候使用
如果你发现某个对象的成员只会被我们使用一次 以后再也不需要使用的时候
就可以使用匿名对象
如果方法的参数是一个对象,而调用者为这个参数赋值的时候
就是专门来给这个方法传递的 并且这个对象调用者不会使用 这个时候就可以使用匿名对象
God *god = [God new];
[god killWithPerson :[Person new]];
1,面向对象的三大特征是什么?
封装:
函数就是一个封装的体现
类就是更高级的封装,将数据和行为封装为了一个整体
好处:
a,屏蔽内部的实现,
外部不需要知道内部是如何实现的 只需要知道这个对象有什么用
b,方便操作
c,后期的维护十分便利
继承:
多态:
2,存在的问题
就是为对象的属性赋值的时候 语法上其实只要数据的类型是属性的类型就可以
但是,情理上这么做是不合的
就像Person对象有1个int类型的属性_age 表示一个人的年龄
为这个对象的_age属性赋值的时候 其实只要int类型都可以
但是 正常情况只会在0-200之间
解决:
在为对象的属性赋值的时候 ,我希望将这个数据做一个逻辑验证
如果符合 就赋值 否则 就做默认处理
3,如何实现? setter
1),不能写@public
否则 外界就能直接访问这个属性
外界一旦可以访问,就可以任意赋值。
2),再提供一个赋值方法
a,这个方法一定是一个对象方法,因为要为属性赋值
b,没有返回值
c,方法名必须以set开头 跟上去掉下划线首字母大写的属性名
d,这个方法一定是有参数的, 参数的类型与属性的类型一致
e,再在方法的实现中,判断传入的数据是否符合逻辑
4,getter
1),是一个对象方法
2),这个方法有和要拿的属性一样的返回值 没有参数
3),方法名是属性名去掉下划线
4),方法的实现就是直接返回属性的值。
作者: 1871037345 时间: 2016-5-25 22:48
大爱无疆,呵呵,手下 了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |