object c 高效率和java_Objective-C 和 Java 很像,区别在哪儿?

1.类比较

objC:例如创建一个bird的类

@Interface bird{

@private int foot;

}

-(void)eat{

NSLog(@"what is the bird eat?");

}

@end

objectC是以"-"和“+”开头的类方法,-(void)eat:(id)sender{}加:是带参数的,void是eat方法的返回类型,参数的描述包含两个部分:圆括号中的参数类型以及圆括号后面的参数名。

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();

};

与java和C++一样ObjC的类也可以继承其他类,几乎所有的类都要继承NSObject的基类,继承方法也类似于C++但public和priavte关键字不能在父类前。注意objec和java一样不能多继承。

这里java中的interface在objectC就是protocol,但是在java中可以多接口,只能单继承,这一点ObjetC和java相似。

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.成员变量

在ObjectC中self就像c++和java中的this一样,ObjectC的类方法就使用self关键字。

5.内存管理

objectC不像java那样有垃圾收集器可以看管对象释放及分配内存,若objectc没有内存管理的话,就会泄露内存。因此relase就是一个内存释放器,当通过alloc函数或是以new copy 开头的函数创建NSObject的子类实例时就将计数值-1,变成0就是由1->0若没有内存管理,则计数值不会变成0.

这些是比较典型的,其实还有很多相同和不同之处。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值