第二讲 类和对象
2015-09-09 20:58
295 查看
一、Objective-C与C++的区别
1.1 OC面向对象的特点
Objective-C是⼀一门面向对象的编程语⾔言:它可以对类和对象进⾏行管理; 像在C++中⼀一样,把头⽂文件和实现⽂文件分开写是非常有用的。
ObjC使用.h作为头⽂文件的后缀,使用.m作为实现⽂文件的后缀。并且在ObjC中, 使用 #import 包含头⽂文件,⽽而不是 #include。事实上,在c语⾔言或者C++语⾔言中, 为了防⽌止头⽂文件被重复包含,需要使用头⽂文件预处理防⽌止头⽂文件的重复包含。而 #import本身就有防⽌止头⽂文件被重复包含的功能。

mType (returnType) name1:(type1)param1 name2:(type2)param2…
方法类型(返回值类型) 方法名1:(参数1类型)参数名 方法名2:(参数2类型)参数2名称
mType:方法类型
•・ returnType:返回值类型
•・ name1/name2:标签名
•・ type1/type2:参数类型
•・ param1,param2:参数名字
OC中方法(函数)的规则:
方法需要参数时,方法名后要有冒号
方法名的每⼀一部分:标签 冒号前面是标签,
冒号后面是参数类型和参数名

类中的方法分为两种:类方法和实例⽅方法
即方法中的⽅方法类型mType分为两种:分别用 “+” 和 “-” 标识。
•・ 如果类型为 + ,则表示方法为类⽅方法(相当于c++中的静态成员函数)
•・ 如果类型为 - ,则表示方法为实例⽅方法(相当于c++中的非静态成员函数)
OC中方法(函数)的规则:
所有的方法在 @interface…@end 部分声明,在 @implementation…@end 部分实现。
如果一个或多个协议在interface部分列出,则协议中的相关方法可以在该类中实现。
OC中方法实现(函数)的规则:
方法实现时,需要注意的是该方法原型必须和它在interface部分的声明保持一致
实例方法可以通过名字引用本类或者本类中继承过来的实例变量,但是在类方法中,不可以引用实例变量;
在一个方法中,可以使用标识符 self 用作当前对象的引用,来调用当前对象的方法。类似于 C++中的 this 指针。
1.1 OC面向对象的特点
Objective-C是⼀一门面向对象的编程语⾔言:它可以对类和对象进⾏行管理; 像在C++中⼀一样,把头⽂文件和实现⽂文件分开写是非常有用的。
ObjC使用.h作为头⽂文件的后缀,使用.m作为实现⽂文件的后缀。并且在ObjC中, 使用 #import 包含头⽂文件,⽽而不是 #include。事实上,在c语⾔言或者C++语⾔言中, 为了防⽌止头⽂文件被重复包含,需要使用头⽂文件预处理防⽌止头⽂文件的重复包含。而 #import本身就有防⽌止头⽂文件被重复包含的功能。

mType (returnType) name1:(type1)param1 name2:(type2)param2…
方法类型(返回值类型) 方法名1:(参数1类型)参数名 方法名2:(参数2类型)参数2名称
mType:方法类型
•・ returnType:返回值类型
•・ name1/name2:标签名
•・ type1/type2:参数类型
•・ param1,param2:参数名字
OC中方法(函数)的规则:
方法需要参数时,方法名后要有冒号
方法名的每⼀一部分:标签 冒号前面是标签,
冒号后面是参数类型和参数名

类中的方法分为两种:类方法和实例⽅方法
即方法中的⽅方法类型mType分为两种:分别用 “+” 和 “-” 标识。
•・ 如果类型为 + ,则表示方法为类⽅方法(相当于c++中的静态成员函数)
•・ 如果类型为 - ,则表示方法为实例⽅方法(相当于c++中的非静态成员函数)
[code]//Circle.h #import <Foundation/Foundation.h> static int sum = 2; //ERROR OC不⽀支持静态实例变量,⽽而是通过静态全局变量来实现 静态实例变量的功能; @interface Circle : NSObject{ int radius; int x; int y; } - (void)print; //相当于c++的 void print(); - (void)setR:(int)_r andX:(int)_x andY:(int)_y; + (int)getNum; - (void)func; @end //Circle.m #import "Circle.h" @implementation Circle - (void)print{ NSLog(@"半径:%d xy坐标:(%d,%d)",radius,x,y); } - (void)setR:(int)_r andX:(int)_x andY:(int)_y{ radius = _r; x = _x; y = _y; } + (int)getNum{ return sum; } - (void)func{ [self print]; } @end //main.m #import <Foundation/Foundation.h> #import "Circle.h" @autoreleasepool { Circle *c = [[Circle alloc]init]; //alloc开辟空间,init初始化 [c print]; [c setR:1 andX:2 andY:3]; [c print]; NSLog(@"%d",[Circle getNum]); }
OC中方法(函数)的规则:
所有的方法在 @interface…@end 部分声明,在 @implementation…@end 部分实现。
如果一个或多个协议在interface部分列出,则协议中的相关方法可以在该类中实现。
OC中方法实现(函数)的规则:
方法实现时,需要注意的是该方法原型必须和它在interface部分的声明保持一致
实例方法可以通过名字引用本类或者本类中继承过来的实例变量,但是在类方法中,不可以引用实例变量;
在一个方法中,可以使用标识符 self 用作当前对象的引用,来调用当前对象的方法。类似于 C++中的 this 指针。
相关文章推荐
- 将空格转换成%20
- 关于数组
- Windows 10 录音上的一个问题
- C++用法的学习心得(要求包含示例,并反映出利用网络获取帮助的过程)
- java面向对象的编程
- MasonryExample
- Thinkphp更换模板主题
- 上转型对象的使用
- 关于 setBackgroundImage 和 setImage
- 文件操作
- 什么是开发中经常说的POCO
- tomcat server.xml配置介绍
- 容器视图控制器
- UVA 11324 The Largest Clique (拆点+KM)
- 【IO】同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- 【Beijing wc2012】【BZOJ2659】算不出的算式
- qrencode二维码生成在linux下的编译(转)
- Linux 文件查看常用命令
- POJ - 1751 Highways(最小生成树)
- VC模拟文件拖拽