这是我在学习的时候记录的一些笔记,拿出来与大家共享一下,希望看完之后能对OC中的类和对象有所了解:
OOP(Object Oriented Programming):面向对象编程
面向过程编程:分析解决问题的步骤,实现函数,依次使用
面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题。
面向过程是以事件为中心,关心的是完成这个事件的详细步骤;
面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能
(以过程为中心,以对象为中心)
对象定义了解决问题的步骤中的行为,不刻意完成一个步骤
类:具有相同特征和行为的事物的抽象
对象是类的实例,类是对象的类型:万事万物皆对象
/** * 类的定义包含两部分:接口部分以及实现部分,接口部分写在 .h文件中,实现部分写在 .m文件中 */ /** * 接口部分,@interface 开头 + 类名 + :(冒号表示继承) + 父类名 @end 结束 只要符合这种格式,都可以定义一个类的接口部分 */
// .m 文件是类的实现部分 /** * 实现部分 以@implementation + 类名(要对哪个类实现) 以 @end 结束 只要符合这种实现的格式,都可以定义一个类的实现部分 */
//一个文件里面可以定义多个类,只要接口部分符合@interface开头 @end结束,实现部分符合 @implementation开头 @end结束 格式就可以定义多个类 //本质上文件和类没有直接关系 //一般情况下,一个文件只定义一个类,并且文件的名字默认和类名相同
//NSLog输出到控制台,@是OC的标志,并且自带换行
消息发送机制:[receiver message]
- 对象调用的方法
+ 类调用的方法
id:对象类型
//创建一个 Person 类的对象 //创建对象分两步: //1.在堆区开辟空间 Person *per = [Person alloc]; //通过alloc开辟空间 //2.初始化(基本数据类型置0,对象数据类型置nil) per = [per init]; // Person * per2 = [[Person alloc] init]; //开辟空间并初始化 //对象调用方法,方法调用采用消息发送机制,[receiver message] //如果该方法是 - 号方法,则应该用对象调用,如果是 + 号方法,则应该用类调用。receiver为类或者对象,message为调用的方法名
//实例变量的可见度: //1.@public: 公共的,任何文件都可以通过指向操作符进行访问 //2.@private: 私有的,只有在该类的 .m 文件中才可以访问,子类以及其他的文件不可访问 //3.@protected: 受保护的,除了该类和子类之外不可被其他文件访问 //系统默认是 @protected (受保护)的, //面向对象的三大特性:封装,继承以及多态
不使用@public的原因:
1.使用@public关键字,暴露了类内部的细节;
2.不符合面向对象语言的三大特性之一——封装
不使用@private的原因:
不符合面向对象语言的三大特性之一——继承
类方法:只能类使用,+ 方法,类方法中不能使用实例变量;
实例方法:只能对象使用, - 方法。
//setter 方法(也叫设置器),给单一实例赋值,也就是该方法只有一个参数 //getter 方法(也叫访问器),获取单一实例变量的值,无参数,有一个返回值 //setter 方法的规范写法:- 号方法, set开头 + 实例变量名(去掉下划线,并且首字母大写) + 冒号 + 实例变量参数类型 + 实例变量名(去掉下划线),并且返回值类型为void //getter 方法的规范写法: - 号方法,返回值类型和实例变量类型相同,方法名与实例变量名相同(去掉下划线)。
//#import 可以避免重复导入,也就是说当我们#import多次同一个头文件时,只做了一次代码或文本的替换
//枚举也是一个构造类型,枚举类似于数学中的穷举法,列出了所有的可能, //枚举是把人能够识别的标识符和计算机能够识别的数字结合起来。 //在使用枚举值时,系统会自动替换成对应的数字 //如果第一个枚举值,没有给定对应的整数值,则默认是从0开始,然后后边的枚举值所对应的整数值以前一个枚举值对应的整数值为基础,然后加1。如果后边的枚举值指定了对应的整数值,则以指定的整数值为准。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。