Objective C 学习之路2 类的定义和实现
2010-12-09 22:13
274 查看
Objective C的基本语法和C++都是一样的,本来也是,都是从C演变来的,但是到了类这块就开始不一样了,反正我第一次看到,就是觉得特别看不顺眼,C++用太久了哈!
下面是一个类在Obj C下的定义格式,这里如果要定义一个类就必须以@interface ClassName开始,以@end为结束,原因似乎是说Objective-C都是以关键字@,作为编译路径的。
@interface ClassName : ItsSuperclass
{
instance variable declarations
}
method declarations
@end
这里ClassName就是类名,ItsSuperclass,就是继承类。还有就是,类的成员变量都定义在大括号内,而方法是放在大括号外面的,这个是和C++很不相同的。变量的定义基本不变,和C++一样也有三种访问权限,不过要写成@public,@protected 和@private.
最大不同是方法的定义,除了要放到括号外,还必须要在方法定义前加这个'-'符号,说明是定义方法而不是函数。然后在'-'后面紧跟返回类型,要用括号括起来,下来是名字,然后奇怪的地方又出来了,这里方法的参数是在methodName:后面用(Type) argument的方式表示出来,一个‘:'代表一个参数
-(Type)methodName:(Type) argument
定义完了类之后,就要实现类的具体方法,首先要写@implementation ClassName,然后用和在定义中定义方法的格式一样,在大括号里实现方法的具体代码。
@implementation ClassName
-(Type)methodName:(Type) argument{
//statement
}
@end
初始对象,这里也和C++有些不同,方式也有些古怪,当我们要new一个新的指针对象时,格式如下
[receiver message:arguments],其中receiver可以是一个对象或者类。
在Obj-C中方法要被分为两类来看,一类是给对象定义的叫 instance method(实例方法),另一类就是为类定义的叫做class method(类方法) 。
ClassName *object=[ClassName new];看到new就知道是在分配内存,但是在这里,还有一层意思是说给这个新的对象发送一个init的消息,zero所有的的成员变量。
在对象调用方法的时候也同C++有区别,比如[object ClassMethod],等同于C++中的object->ClassMedthod,称之为发送消息给对象
下面是一个类在Obj C下的定义格式,这里如果要定义一个类就必须以@interface ClassName开始,以@end为结束,原因似乎是说Objective-C都是以关键字@,作为编译路径的。
@interface ClassName : ItsSuperclass
{
instance variable declarations
}
method declarations
@end
这里ClassName就是类名,ItsSuperclass,就是继承类。还有就是,类的成员变量都定义在大括号内,而方法是放在大括号外面的,这个是和C++很不相同的。变量的定义基本不变,和C++一样也有三种访问权限,不过要写成@public,@protected 和@private.
最大不同是方法的定义,除了要放到括号外,还必须要在方法定义前加这个'-'符号,说明是定义方法而不是函数。然后在'-'后面紧跟返回类型,要用括号括起来,下来是名字,然后奇怪的地方又出来了,这里方法的参数是在methodName:后面用(Type) argument的方式表示出来,一个‘:'代表一个参数
-(Type)methodName:(Type) argument
定义完了类之后,就要实现类的具体方法,首先要写@implementation ClassName,然后用和在定义中定义方法的格式一样,在大括号里实现方法的具体代码。
@implementation ClassName
-(Type)methodName:(Type) argument{
//statement
}
@end
初始对象,这里也和C++有些不同,方式也有些古怪,当我们要new一个新的指针对象时,格式如下
[receiver message:arguments],其中receiver可以是一个对象或者类。
在Obj-C中方法要被分为两类来看,一类是给对象定义的叫 instance method(实例方法),另一类就是为类定义的叫做class method(类方法) 。
ClassName *object=[ClassName new];看到new就知道是在分配内存,但是在这里,还有一层意思是说给这个新的对象发送一个init的消息,zero所有的的成员变量。
在对象调用方法的时候也同C++有区别,比如[object ClassMethod],等同于C++中的object->ClassMedthod,称之为发送消息给对象
相关文章推荐
- 算法学习之路:分治策略-最大子数组-java实现
- 翻翻git之---自己定义邮件发送buttonSendButton(流程分析,实现思路能够学习下)
- 【学习ios之路:UI系列】点击更换头像实现从相册读取照片和拍照两种功能
- Android开发学习之路-回调实现Service向activity传递数据
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- 我的编程学习之路——用java实现冒泡法
- 【学习ios之路:UI系列】实现打电话,发短信,发邮件功能
- html5学习之路--------实现时钟
- Flex 学习之路之十三 用户接口user interface 实现进度条 preloader
- spring源码学习之路---IOC容器初始化要义之bean定义载入
- 学习笔记之C++为什么将函数声明或者类的定义放在.h文件中,而将其实现放在原文件中
- spring源码学习之路---IOC实现原理(三)
- [EntLib]微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法
- 微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——中篇
- Android学习之路---使用ViewPager实现引导页
- 学习C++ -> 类(Classes)的定义与实现
- Windows 8 Directx 开发学习笔记(九)材质定义及混合光照效果实现
- iPhone学习之路 TableView实现动态加载图片
- IOS开发---菜鸟学习之路--(八)-实现新闻页面
- [原创]java WEB学习笔记85:Hibernate学习之路-- -映射 一对一关系 ,基于主键方式实现