类的创建和实例化以及函数的添加和调用
2012-02-01 16:44
197 查看
上一小节的随笔写了常用的打印以及很基础的数据类型的定义方式,今天就来一起学习下如何创建类与函数的一些随笔;
首先类的创建:在Xcode下,菜单File-New File,然后出现选择class模板,如下图(图1)
图1 class 模版选择界面
这里不需要手动选择什么,,默认是Objective-C class模版,我们直接Next,出现以下窗口:(图2)
图2 为新建类起类名
此窗口下,我们只需要将类名填写好就ok,直接点击”Finish“,这里便于讲解后续的代码,这里我将类名起名为”MyClass“
点击”Finish“后,在我们的项目下会出现两个文件:
1. MyClass.m
2. MyClass.h
接触过c语言的很熟悉会生成两个文件,将一个类分为了两个部分,简单而言:
“.h”后缀的是此类声明,比如变量、方法声明都会在此文件下定义—类定义部分;
“.m”文件是书写类方法的实现—类实现部分;
ok,然后先看"MyClass.h"与“MyClass.h” 两个文件中自动生成的代码:
[c-sharp] view
plaincopy
//以下为 MyClass.h 中的代码:#import <Foundation/Foundation.h>// @interface:表示类接口部分// NSObject @interface MyClass : NSObject {}//end 标识结束类接口部分@end//以下为 MyClass.m 中的代码:#import "MyClass.h"// @implementation:表示类实现部分@implementation MyClass//end 标识结束类实现部分@end
下面我们简单在MyClass类中添加几个函数和变量,当然我这里说的添加在实现上分为两步:首先在.h类声明文件中进行函数声明,然后在.m文件下进行实现;代码如下:
首先在MyClass.h 中定义:
[c-sharp]
view plaincopy
#import <Foundation/Foundation.h>// @interface:表示类接口部分@interface MyClass : NSObject {int himiX,himiY;}//声明两个带有返回值的函数-(int) getX;-(int) getY;//声明两个无返回值但有一个参数的函数-(void) setX:(int) x;-(void) setY:(int) y;//声明一个无返回值,但有两个参数的函数-(void) setXY:(int) x andSetXY:(int) y;//end 标识结束类接口部分@end
定义了两个整型以及四个函数,函数的种类分为以下四种:
1. 带返回值的函数
2. 不带返回值的函数
3.有一个参数的函数
4.有两个(多个)参数的函数
然后在MyClass.m中实现这些函数:
[c-sharp] view
plaincopy
#import "MyClass.h"// @implementation:表示类实现部分@implementation MyClass//----以下是声明的函数一一实例的代码-(int) getX{return himiX;}-(int) getY{return himiY;}-(void) setX:(int) x{himiX=x;}-(void) setY:(int) y{himiY=y;}-(void) setXY:(int) x andSetXY:(int) y{himiX =x;himiY =y;}//end 标识结束类实现部分@end
关于函数定义有两点需要详细说明:
1.关于“-”符号表示的方法类型其详细含义指的是 :实例方法;
如果是“+”符号表示:这个函数是一个类函数,表明其他代码可以直接调用的类方法;不用创建其类的实例;
2.关于多个参数参数定义:当想声明一个有多个参数的方法时,我们可以理解当前这个方法的方法名被分为多个部分;
比如有两个参数,那么整个方法的名字可以认为此函数的名字将被分为两部分;三个参数的函数,其函数名就有三个部分...
那么为了便于识别是一个函数中的名字部分,所以当参数有多个时,名字的命名规则可以按照如下这样:
例如这里定义了一个三个参数的函数:
方法名的第一部分:getHimi 第二部分 getHimiTwo 第三部分 ThreeGetThree
当然这里我是想告诉大家,多个参数的函数中,每一部分的函数名尽可能有规律可循即可,便免与其他函数名混淆;
ok,类设计完毕之后,下面我们在程序主函数中,实例此类对象,并调用其函数,代码如下:
[c-sharp]
view plaincopy
#import <Foundation/Foundation.h>#import "MyClass.h"int main (int argc, const char * argv[]) {NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];//-----------//实例类对象MyClass *mc =[[MyClass alloc]init];//调用带有返回值的函数int x = [mc getX];int y = [mc getY];NSLog(@"x = %i,y = %i",x,y);//调用无返回值且带有一个参数的函数[mc setX:8];[mc setY:23];x = [mc getX];y = [mc getY];NSLog(@"x = %i,y = %i",x,y);//调用无返回值且带有两个(多个)参数的函数[mc setXY:9 andSetXY:22];x = [mc getX];y = [mc getY];NSLog(@"x = %i,y = %i",x,y);[mc release];//-----------[pool drain];return 0;}
类的实例化:
如上一段代码中对MyClass类的实例化的代码:
MyClass *mc =[[MyClass alloc]init];
[[MyClass alloc]init] 中的 alloc 是固定格式,是为对象申请内存空间, init则完成对象的初始化工作;
方法(函数的调用):
首先我们通过实例化了一个MyClass对象-mc,然后通过mc调用其类中的函数:
有返回值并且无参数的函数调用:
变量 = [实例 方法名];
没返回值且有一个参数的函数调用:
[实例 方法名:参数]
;
没返回值且有两个(多个)参数的函数调用:
[实例 方法名(第一部分):参数1 方法名字(第二部分):参数2];
ok,然后观察运行项目的结果:
ok,此小节就是这些,下面附上源码下载把:仍然免费共享~希望大家多多支持~
源码下载地址: http://download.csdn.net/source/3407625
首先类的创建:在Xcode下,菜单File-New File,然后出现选择class模板,如下图(图1)
图1 class 模版选择界面
这里不需要手动选择什么,,默认是Objective-C class模版,我们直接Next,出现以下窗口:(图2)
图2 为新建类起类名
此窗口下,我们只需要将类名填写好就ok,直接点击”Finish“,这里便于讲解后续的代码,这里我将类名起名为”MyClass“
点击”Finish“后,在我们的项目下会出现两个文件:
1. MyClass.m
2. MyClass.h
接触过c语言的很熟悉会生成两个文件,将一个类分为了两个部分,简单而言:
“.h”后缀的是此类声明,比如变量、方法声明都会在此文件下定义—类定义部分;
“.m”文件是书写类方法的实现—类实现部分;
ok,然后先看"MyClass.h"与“MyClass.h” 两个文件中自动生成的代码:
[c-sharp] view
plaincopy
//以下为 MyClass.h 中的代码:#import <Foundation/Foundation.h>// @interface:表示类接口部分// NSObject @interface MyClass : NSObject {}//end 标识结束类接口部分@end//以下为 MyClass.m 中的代码:#import "MyClass.h"// @implementation:表示类实现部分@implementation MyClass//end 标识结束类实现部分@end
下面我们简单在MyClass类中添加几个函数和变量,当然我这里说的添加在实现上分为两步:首先在.h类声明文件中进行函数声明,然后在.m文件下进行实现;代码如下:
首先在MyClass.h 中定义:
[c-sharp]
view plaincopy
#import <Foundation/Foundation.h>// @interface:表示类接口部分@interface MyClass : NSObject {int himiX,himiY;}//声明两个带有返回值的函数-(int) getX;-(int) getY;//声明两个无返回值但有一个参数的函数-(void) setX:(int) x;-(void) setY:(int) y;//声明一个无返回值,但有两个参数的函数-(void) setXY:(int) x andSetXY:(int) y;//end 标识结束类接口部分@end
定义了两个整型以及四个函数,函数的种类分为以下四种:
1. 带返回值的函数
2. 不带返回值的函数
3.有一个参数的函数
4.有两个(多个)参数的函数
然后在MyClass.m中实现这些函数:
[c-sharp] view
plaincopy
#import "MyClass.h"// @implementation:表示类实现部分@implementation MyClass//----以下是声明的函数一一实例的代码-(int) getX{return himiX;}-(int) getY{return himiY;}-(void) setX:(int) x{himiX=x;}-(void) setY:(int) y{himiY=y;}-(void) setXY:(int) x andSetXY:(int) y{himiX =x;himiY =y;}//end 标识结束类实现部分@end
关于函数定义有两点需要详细说明:
1.关于“-”符号表示的方法类型其详细含义指的是 :实例方法;
如果是“+”符号表示:这个函数是一个类函数,表明其他代码可以直接调用的类方法;不用创建其类的实例;
2.关于多个参数参数定义:当想声明一个有多个参数的方法时,我们可以理解当前这个方法的方法名被分为多个部分;
比如有两个参数,那么整个方法的名字可以认为此函数的名字将被分为两部分;三个参数的函数,其函数名就有三个部分...
那么为了便于识别是一个函数中的名字部分,所以当参数有多个时,名字的命名规则可以按照如下这样:
例如这里定义了一个三个参数的函数:
方法名的第一部分:getHimi 第二部分 getHimiTwo 第三部分 ThreeGetThree
当然这里我是想告诉大家,多个参数的函数中,每一部分的函数名尽可能有规律可循即可,便免与其他函数名混淆;
ok,类设计完毕之后,下面我们在程序主函数中,实例此类对象,并调用其函数,代码如下:
[c-sharp]
view plaincopy
#import <Foundation/Foundation.h>#import "MyClass.h"int main (int argc, const char * argv[]) {NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];//-----------//实例类对象MyClass *mc =[[MyClass alloc]init];//调用带有返回值的函数int x = [mc getX];int y = [mc getY];NSLog(@"x = %i,y = %i",x,y);//调用无返回值且带有一个参数的函数[mc setX:8];[mc setY:23];x = [mc getX];y = [mc getY];NSLog(@"x = %i,y = %i",x,y);//调用无返回值且带有两个(多个)参数的函数[mc setXY:9 andSetXY:22];x = [mc getX];y = [mc getY];NSLog(@"x = %i,y = %i",x,y);[mc release];//-----------[pool drain];return 0;}
类的实例化:
如上一段代码中对MyClass类的实例化的代码:
MyClass *mc =[[MyClass alloc]init];
[[MyClass alloc]init] 中的 alloc 是固定格式,是为对象申请内存空间, init则完成对象的初始化工作;
方法(函数的调用):
首先我们通过实例化了一个MyClass对象-mc,然后通过mc调用其类中的函数:
有返回值并且无参数的函数调用:
变量 = [实例 方法名];
没返回值且有一个参数的函数调用:
[实例 方法名:参数]
;
没返回值且有两个(多个)参数的函数调用:
[实例 方法名(第一部分):参数1 方法名字(第二部分):参数2];
ok,然后观察运行项目的结果:
ok,此小节就是这些,下面附上源码下载把:仍然免费共享~希望大家多多支持~
源码下载地址: http://download.csdn.net/source/3407625
相关文章推荐
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- 函数调用的具体过程以及栈帧的创建和销毁
- 函数的调用过程、栈帧的创建以及销毁
- 浅谈函数的调用过程,栈帧的创建以及销毁
- mysql函数的创建以及hibernate调用mysql自定义函数以及数据对比功能,模仿中关村在线
- C++与Python的混合编程-调用有参函数以及C++数据类型与Python数据类型间的转换
- 父类与子类之间静态函数的调用以及函数参数的传递
- NGUI 给Button添加事件并调用用户函数
- 思路:如何跳过CreateProcess调用底层创建进程函数
- C/C++中函数的调用约定(__cdecl, __stdcall)以及extern, extern “C"的详细解释
- javascript面向对象(对象的创建以及属性和方法的添加)
- nginx一般的http请求建立处理,发送函数调用,以及各个phase的状态(等完善)
- visual studio 小技巧 查看函数的调用层次结构 以及 部分常用快捷键
- 硬件中断和软件中断以及中断与函数调用的区别
- [水晶报表]水晶报表创建以及调用方法
- ATL--创建简单的ATL之dll工程,添加类和类的接口并在MFC中调用