.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