OBJ-C匿名对象和封装学习笔记
来源:互联网 发布:ca证书检测网络未连接 编辑:程序博客网 时间:2024/05/21 17:53
==============================================
匿名对象和封装
==============================================
匿名类优缺点:
优点:可以简化代码,方便方法调用;
缺点:匿名对象实例化后,只能正确的使用成员变量一次;
常见用法:
Person *p = [[Person alloc] init];
Person *p1 = [Person new];
两者区别:
alloc 和 init 分别把分配内存和初始化的工作分开。这样更加地灵活,可以自行初始化对象的成员变量值。
而不像new每次都初始化为0
new是把分配内存和初始化的工作一起完成了,先分配内存,然后调用类的构造函数。
==========================================================================================
封装的概念及原理
====================================================================================
为什么要进行封装?
不封装的缺点:
当一个类把自己的属性暴露给外部的时候,那么该类就失去对属性的管理权;
将数据隐藏起来,只能用此类的方法函数才可以访问或者设置数据,不可被外部任意存储是面向对象设计本质,降低了数据被无用的可能性。
在OC语言中,使用@interface和@implementation来处理类;
@interface就好像暴露在外面的始终表面,像外界提供展示以及接口,@implementation就好像隐藏在始终内部的构造实现,把具体的实现封装了起来。
-------------------------------------------------------------------------------------
封装的原理?
实例变量默认只能被当前类的对象方法访问。
----------------------------------------------------------------------------------
封装的实现步骤 (重点!!!!!)
定义设置实例变量(setter)方法和访问实例变量(getter)的方法
1.setter方法(设置器)
在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public,@protected等关键字修饰,而是使用set方法来为对象提供成员变量的值,在set方法的内部也可以对一些不合理的赋值进行筛选过滤。
set方法的作用:为外界提供一个设置成员变量值的方法。
命名规范:
1.方法名必须以set开头
2.set后面跟上成员变量的名称,首字母大写,如: _age----->setAge
3.返回值一定是void
4.一定要接受一个参数,而且参数类型需要和成员变量的类型一致
5.形参名不能和成员变量名一样(苹果官方推荐成员变量名前加 _ 以示区分)
6.set方法的形参名一般是去掉下划线的实例变量名;
7.set方法一定是一个对象方法;
8.set方法实现中,一定要用形参给实例变量赋值;
-----------------------------------------------------------------------------
2.getter方法(访问器)
get方法的作用:为调用者返回对象内部的成员变量
命名规范:
1.get方法一定是一个对象方法;
2.get方法一定有方绘制,返回值的类型和实例变量的类型要一致;
3.get方法的方法名,是去掉下划线的实例变量名;
4.get方法一定没有参数;
5.get方法的实现中,一定是返回值实例变量值;
-------------------------------------------------------------------------
匿名对象和封装
==============================================
匿名类优缺点:
优点:可以简化代码,方便方法调用;
缺点:匿名对象实例化后,只能正确的使用成员变量一次;
常见用法:
Person *p = [[Person alloc] init];
Person *p1 = [Person new];
两者区别:
alloc 和 init 分别把分配内存和初始化的工作分开。这样更加地灵活,可以自行初始化对象的成员变量值。
而不像new每次都初始化为0
new是把分配内存和初始化的工作一起完成了,先分配内存,然后调用类的构造函数。
==========================================================================================
封装的概念及原理
====================================================================================
为什么要进行封装?
不封装的缺点:
当一个类把自己的属性暴露给外部的时候,那么该类就失去对属性的管理权;
将数据隐藏起来,只能用此类的方法函数才可以访问或者设置数据,不可被外部任意存储是面向对象设计本质,降低了数据被无用的可能性。
在OC语言中,使用@interface和@implementation来处理类;
@interface就好像暴露在外面的始终表面,像外界提供展示以及接口,@implementation就好像隐藏在始终内部的构造实现,把具体的实现封装了起来。
-------------------------------------------------------------------------------------
封装的原理?
实例变量默认只能被当前类的对象方法访问。
----------------------------------------------------------------------------------
封装的实现步骤 (重点!!!!!)
定义设置实例变量(setter)方法和访问实例变量(getter)的方法
1.setter方法(设置器)
在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public,@protected等关键字修饰,而是使用set方法来为对象提供成员变量的值,在set方法的内部也可以对一些不合理的赋值进行筛选过滤。
set方法的作用:为外界提供一个设置成员变量值的方法。
命名规范:
1.方法名必须以set开头
2.set后面跟上成员变量的名称,首字母大写,如: _age----->setAge
3.返回值一定是void
4.一定要接受一个参数,而且参数类型需要和成员变量的类型一致
5.形参名不能和成员变量名一样(苹果官方推荐成员变量名前加 _ 以示区分)
6.set方法的形参名一般是去掉下划线的实例变量名;
7.set方法一定是一个对象方法;
8.set方法实现中,一定要用形参给实例变量赋值;
-----------------------------------------------------------------------------
2.getter方法(访问器)
get方法的作用:为调用者返回对象内部的成员变量
命名规范:
1.get方法一定是一个对象方法;
2.get方法一定有方绘制,返回值的类型和实例变量的类型要一致;
3.get方法的方法名,是去掉下划线的实例变量名;
4.get方法一定没有参数;
5.get方法的实现中,一定是返回值实例变量值;
-------------------------------------------------------------------------
0 0
- OBJ-C匿名对象和封装学习笔记
- OBJ-C类和对象学习笔记
- obj-c学习笔记
- OBJ-C对象的存储细节学习笔记
- OBJ-C self和super关键字学习笔记
- OBJ-C类的继承和派生学习笔记
- OBJ-C @property和@synthesize关键字学习笔记
- Java基础05天 学习笔记_面向对象(概念,封装,匿名对象,this关键字)
- Java学习笔记----匿名对象
- OBJ-C简介部分学习笔记
- OBJ-C类方法概述学习笔记
- OBJ-C组合模式学习笔记
- OBJ-C组合模式学习笔记
- OBJ-C构造方法学习笔记
- OBJ-C block + protocol 学习笔记
- OBJ-C NSString + NSRange + NSMutableString 学习笔记
- OBJ-C NSArray + NSDictionary学习笔记
- 【JavaSE学习笔记】面向对象_01(入门,匿名对象,成员变量,局部变量,封装,this,构造方法)
- Java 4(数组、方法)
- swift的基本语法
- LeetCode 320. Generalized Abbreviation(产生缩写)
- LeetCode 222. Count Complete Tree Nodes
- OBJ-C类方法概述学习笔记
- OBJ-C匿名对象和封装学习笔记
- Linux内核--内存管理
- 用std::pair做Unordered_map的key(C++)
- C++笔记 如何统计程序运行时间
- 51Nod-1013-3的幂的和
- Java 消息机制之回调详解
- 几道题(hdu5671 && hdu5672 && hdu5673)
- LeetCode 139. Word Break
- hdu 1005 Number Sequence