OC语言2-基础知识
2016-05-31 10:46
323 查看
一、面向对象
OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,
面向对象关注的是设计能够实现解决问题所需功能的类。
术语:OO面向对象、OOP面向对象编程
二、类
1.关于类
类的设计只关注三个东西:类名、属性和方法注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,
类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识。
在对方法进行类的划分中,一般采取的做法是谁最熟悉这个方法那么就把这个方法划分给谁。
在OC中,对象对方法的调用称为消息机制,即向既定的对象发送了什么消息。
2. 简单内存分析
类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所有的对象公用类的成员方法,方法在整个内存中只有一份,类本身在内存中占据一份存储空间,类的方法存储于此。每个对象内部都默认有一个isa指针指向这个对象所使用的类。
[p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存储于类中的方法,执行。
isa是对象中的隐藏指针,指向创建这个对象的类。
3. 类的声明和实现
1)类的声明:
这里声明了一个Person类,这个类拥有一个@public修饰的属性(成员变量),以及一个对象方法put。2)类的实现:
类的声明可以理解为类中的方法的实现3)类的调用:
在主函数首先创建了一个Person类型的对象(先调用alloc分配存储空间,后调用init方法初始化为0),并定义了一个Person类型的指针指向创建的这个对象,之后初始化对象成员变量_age的值为20,然后调用了对象的put方法,打印输出。4)练习,创建一个Person类。
类的声明:类的实现如下:
类的调用如下:
4. 常见错误
@interface @end和@implementation @end不能嵌套包含只有类的声明没有类的实现
漏写@end
两个类的声明嵌套(可以把顺序打乱)
成员变量没有写在{}里
方法的声明写在了{}里面
在声明时对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在
方法无法像函数那样的调用
成员变量和方法不能用static等关键字修饰,不要和c语言混淆
类的实现可以写在mian函数后面,在使用之前只要有声明就可以
三、OC对象与函数
OC对象与函数有着本质的区别:方法的实现只能写在@implementation··@end中,对象方法的声明只能写在@interface···@end中间
对象方法都以-号开头,类方法都以+号开头
对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
函数属于整个文件,可以写在文件中的任何位置,包括@implementation··@end中,但写在@interface···@end会无法识别,函数的声明可以再main函数内部也可以在main函数外部。
对象方法归类\对象所有
函数调用不依赖与对象
函数内部不能直接通过成员变量名访问对象的成员变量
四、类和方法的设计
工具类:基本没有任何的成员变量,里面的方法基本都是类方法。注意:在对象方法中可以调用类方法。
需求:设计一个工具类:
一个计算器类,要求
(1)返回π,
(2)计算两个整数的和,
(3)计算某个整数的平方。
类的声明部分
类的实现部分
测试程序:
相关文章推荐
- Object-C中编写省略参数的多参数函数
- Object-c-数组的使用
- Objective-c-字典使用
- OC语言-字符串总结
- OC语言注意事项
- 在oc语言中对象对象属性的封装
- OC语言中的方法
- OC语言中的内存管理
- OC语言中的protocol
- OC语言中的block
- ARC
- OC语言 block 和 代理模式
- 【OC语言连载十】KVC、KVO、谓词
- 黑马程序员——OC语言加强---@property中的copy关键字
- 黑马程序员——OC语言加强---copy概念及入门
- 黑马程序员——OC语言加强---NSArray 的介绍和基本使用
- 黑马程序员——OC语言加强---NSRange使用
- 黑马程序员——OC语言加强---Foundation框架介绍
- 黑马程序员——OC语言加强---block的typedef
- 黑马程序员——OC语言加强---ARC使用特点及注意事项