objective-c和java,C++的比较

 

(2011-08-02 16:14:14)

转载▼

标签:

objective-c

java

c

it

很多人在初学objective-c时候,会感觉迷惘,但是有objectiveC基础的编程人员觉得objectivec的用法比javaC++好用,而且比较简单,可以从多方面比较。
1.
类比较
objC:
例如创建一个bird的类
@Interface bird{
@private int foot;
}
-(void)eat{
NSLog(@"what is the bird eat?");
}
@end
objectC
是以"-"“+”开头的类方法,-voideat:(id)sender{}:是带参数的,voideat方法的返回类型,参数的描述包含两个部分:圆括号中的参数类型以及圆括号后面的参数名。
java: class bird{
private int foot;
public void eat(){
system.out.println("what is the bird eat?");
}
}
C++:class bird{
private:int foot;
pubblic:eat()

}

javaC++一样ObjC的类也可以继承其他类,几乎所有的类都要继承NSObject的基类,继承方法也类似于C++publicpriavte关键字不能在父类前。注意objecjava一样不能多继承。
这里java中的interfaceobjectC就是protocol,但是在java中可以多接口,只能单继承,这一点ObjetCjava相似。
2.
实例化
C++中创建实例:Bird *bird =new Bird();
java中创建实例:
Bird bird=new Bird();
而在objectC中则是: Bird *bird=[Bird alloc];这里的alloc是释放的bird创建实例的消息调度。

3.
消息
objectC
一般调用alloc的调用函数,如Bool listening =[bird isListening];
C++中则会这样
:bool listening =bird-> isListening();
java中就会是:
boolean listening =bird.isListening();
若要带参数:
[bird runEvent:fly];
C++:bird->run(fly);
java:bird.runEvent(fly);
4.
成员变量

ObjectCself就像c++java中的this一样,ObjectC的类方法就使用self关键字。
5.
内存管理
objectC
不像java那样有垃圾收集器可以看管对象释放及分配内存,若objectc没有内存管理的话,就会泄露内存。因此relase就是一个内存释放器,当通过alloc函数或是以new copy 开头的函数创建NSObject的子类实例时就将计数值-1,变成0就是由1->0若没有内存管理,则计数值不会变成0.
这些是比较典型的,其实还有很多相同和不同之处。

因为objectCc的超集。也就是可以用C来写,其实在objectc的项目中可以添加C++语法,这样的混编,文件的扩展名也就变成了.mm文件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值