[Objective-C] 类、对象和方法
2015-05-30 14:22
686 查看
面向对象的重要概念即 是你想对对象做的事情。
C语言中通常是考虑做什么,然后关注对象。而面向对象的语言则是:你有一辆汽车,它就是你的对象,你的汽车是汽车的实例。 即 Car类创造了对象yourCar 你的汽车是汽车的一个实例;
类: programer可以自建,可用来创造对象 可继承于父类 ; (NSObjec是一个根类 我们定义的类属于其派生类, 后续继承部分将会提到。)
对象: 假设 Car 是已建类名, 则 Car* yourCar;
yourCar=[[Car alloc] init]; 则创建了一个汽车实例并初始化, 申请内存并init不再赘述;
方法: 使用于对象、类, (方法是类或对象的行为特征的抽象,也是类或对象的最重要组成部分) 有类方法和实例方法两种;
@interface 部分
接口部分,告知OC编译器该类来自何处, 按照约定,类名以大写字母开头,有助于人阅读你的程序时区分类名和其他变量;
@implementation 部分
实现部分, 对接口声明的类进行定义, 与@interface 部分的名称相同,在这里给出实际的代码。
program 部分
该部分包含解决特定问题的代码, 如果有必要,可以跨越多个文件。 值得注意的是: 必须在其中的某个地方有一个 main 函数。
----------------------
tip : 类方法和实例方法: 开头为(-)通知OC编译器这是一个实例方法,类方法是对于类本身执行某些操作的方法,例如,创建类的新实例;开头为(+)的为实例方法;
声明一个方法 - (void) setNumber: (int ) n;
----------------------
做一个简单的求矩形周长 面积的程序;
Rectangle.h 接口部分:
Rectangle.m 实现部分:
XYPoint.h 接口部分
XYPoint.m 实现部分
运行结果如下:
C语言中通常是考虑做什么,然后关注对象。而面向对象的语言则是:你有一辆汽车,它就是你的对象,你的汽车是汽车的实例。 即 Car类创造了对象yourCar 你的汽车是汽车的一个实例;
类: programer可以自建,可用来创造对象 可继承于父类 ; (NSObjec是一个根类 我们定义的类属于其派生类, 后续继承部分将会提到。)
对象: 假设 Car 是已建类名, 则 Car* yourCar;
yourCar=[[Car alloc] init]; 则创建了一个汽车实例并初始化, 申请内存并init不再赘述;
方法: 使用于对象、类, (方法是类或对象的行为特征的抽象,也是类或对象的最重要组成部分) 有类方法和实例方法两种;
@interface 部分
接口部分,告知OC编译器该类来自何处, 按照约定,类名以大写字母开头,有助于人阅读你的程序时区分类名和其他变量;
@implementation 部分
实现部分, 对接口声明的类进行定义, 与@interface 部分的名称相同,在这里给出实际的代码。
program 部分
该部分包含解决特定问题的代码, 如果有必要,可以跨越多个文件。 值得注意的是: 必须在其中的某个地方有一个 main 函数。
----------------------
tip : 类方法和实例方法: 开头为(-)通知OC编译器这是一个实例方法,类方法是对于类本身执行某些操作的方法,例如,创建类的新实例;开头为(+)的为实例方法;
声明一个方法 - (void) setNumber: (int ) n;
----------------------
做一个简单的求矩形周长 面积的程序;
Rectangle.h 接口部分:
#import "XYPoint.h" @interface Rectangle : NSObject @property int width,height; -(XYPoint *) origin; -(void) setOrigin:(XYPoint *)pt; -(void) setWidth:(int)w andHeight:(int) h; -(int ) area; -(int ) perimeter; @end
Rectangle.m 实现部分:
#import "Rectangle.h" @implementation Rectangle { XYPoint* origin; } @synthesize width,height; -(void) setWidth:(int) w andHeight: (int) h { width =w; height=h; } -(void) setOrigin:(XYPoint *)pt { if(!origin) origin=[[XYPoint alloc]init]; origin.x=pt.x; origin.y=pt.x; } -(int) area { return width*height; } -(int ) perimeter { return (width+height)*2; } -(XYPoint*) origin { return origin; } @end
XYPoint.h 接口部分
#import <Foundation/Foundation.h> @interface XYPoint : NSObject @property int x,y; -(void) setX:(int)xVal andY: (int) yVal; @end
XYPoint.m 实现部分
#import "XYPoint.h" @implementation XYPoint @synthesize x,y; -(void) setX:(int) xVal andY:(int) yVal; { x=xVal; y=yVal; } @end接下来是我们最喜欢的main.m部分
#import "Rectangle.h" #import "XYPoint.h" int main() { @autoreleasepool { Rectangle *myRect=[[Rectangle alloc] init]; XYPoint* myPoint=[[XYPoint alloc] init]; [myPoint setX:100 andY:200]; [myRect setWidth:5 andHeight:8]; myRect.origin=myPoint; NSLog(@"Rectangle w= %i,h= %i",myRect.width,myRect.height); NSLog(@"Origin at (%i,%i)",myRect.origin.x,myRect.origin.y); [myPoint setX:50 andY:50]; NSLog(@"area: %i, 周长:%i",[myRect area],[myRect perimeter]); } }
运行结果如下:
相关文章推荐
- Flex中的XMLListCollection,ArrayCollection和ObjectProxy
- Objective- c浅谈对象的初始化
- WaitForSingleObject和CEvent用法
- Object-C非正式协议与正式协议的区别
- 关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
- source insight支持object-c显示的设置
- NSString,NSMutableString
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- cannot open shared object file: No such file or directory解决
- C#如何把List of Object转换成List of T具体类型
- Ljava.lang.Object; cannot be cast to com.bdqn.hibernate.entity.*
- 使用Objective-C的文档生成工具:appledoc
- Java Object类讲解 上帝类及其一些方法的分析
- 5.图片轮播器(scrollView的使用)
- 4.软件管理界面(九宫格)
- ActionScript 3.0 学习(一) Array、Vector以及Object学习
- Objective-c Category使用
- ArcSDE的SQL操作ObjectID获取方式
- OC学习篇之---Foundation框架中的NSObject对象
- file path: c++ #include vs. object-c #import