objective-c笔记:类,继承,复合

.h 文件

@interface Circle: NSObject

{

@private

// 变量

 

}

 

// 方法

 

@end

 

.m文件

@implementation Circle

 

// 方法

 

@end

 

你甚至可以在@implementation里面定义那些在@interface中没有声明过的方法,你可以把它们看做仅能在当前类实现中使用的私有方法。

对于同一个方法来说,@interface和@implementation间的参数名不同是允许的。

 

面向对象编程,坚持“数据第一,函数第二”的编程风格。

 

NSObject类声明了一个名为isa的实例变量(在其内存布局的最开始位置),该变量保存一个指向对象当前类的指针。

 

每个方法调用都获得一个名为self的隐藏参数,self指向继承链中第一个类中的第一个实例变量,也就是isa。因为objective-c编译器已经看到了所有这些类的@interface声明,所以它知道对象中实例变量的布局。通过这些重要的信息,编译器可以产生用来查找实例变量的代码。

 

调用继承的方法在父类中得实现,需要使用super关键字。

重写方法时,调用超类的方法总是一个明智之举。

 

复合是通过包含作为实例变量的对象指针实现的。在为新建对象分配内存时,这些指针将被初始化为nil

 

如果类中没有包含任何实例变量,便可以省略掉@interface定义中的花括号。

 

在定义存取方法的时候,不要将get用作getter方法的前缀。这是因为,如果get出现在Cocoa方法名称中,就意味着这个方法会将你传递的参数作为指针来返回数值。

 

复合还是继承?

继承的类之间建立的关系是is a

复合的类之间建立的关系是has a