1、Object-C只允许单继承,要实现类似多继承的功能可以通过协议(protocol)实现
2、支持多态
3、Object语言本身最大特点--消息传递
在C++里的类与方法的关系非常严格清楚,一个方法必定属于一个类,并且于编译期(compile time)就已经紧密绑在一起,不可能调用一个不存在类里的方法。
Object-C,类与消息的关系较为松散,所有方法都被视为消息的回应,而调用方法则视为对类发送消息。所有消息处理知道运行期(runtime)才会动态决定。并交由类自行决定如何处理收到的消息。
4、一个类不保证一定会回应收到的消息,如果类收到了一个无法处理的消息,程序并不会出错或者当掉。
5、属性总是公共的,其目的为提供外部类访问(也可能为只读)类的内部变量的方法。
属性可以被声明为“readonly”,只读的,也可以提供存储方法包括"assign","copy"或者“retain”(简单的赋值、复制或增加唉1引用计数)
默认的属性是原子的,即在访问时会加锁以避免多线程同时访问同一对象,也可以将属性声明为"nonatomic"(非原子的),避免产生锁。
@interface Person : NSObject{
@public NSString *name;
@privae int age;
}
@property(copy) NSString *name;
@property(readonly) int age;
-(id)initWithAge:(int)age;
@end
访问属性:
属性的访问方法由@synthesize关键字来实现,它由属性的声明自动的产生一对访问方法。另外,也可以选择使用@dynamic关键字表明访问方法由程序员手工提供。
Person * aPerson =[[Person alloc]initWithAge: 53];
aPerson.name =@"steve";