Objective-C面向对象编程-继承

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";