您的位置:首页 > 编程语言

第三章 面向对象编程基础知识

2011-10-13 08:35 260 查看
  Objective-C中的类声明以@interface开始,并以@end为结束符。好的编码习惯会在类声明结束时注释说明类。

  @interface ClassName : BaseClass //或是SuperClass?Objective-C中的基础类是NSObject,应该与其他OO语言一样,实现了基本的创建销毁

  {

    VarType ClassMemberName1;

    VarType ClassMemberName2;

  }

  - (ReturnType) ClassMethod: (VarType) ParamateName;

  @end //注释

  Objective-C中的方法声明如下:

  - (方法返回类型) 方法名称:(参数类型)参数名称;

  Objective-C中有一种名为中缀符(infix notaion)的语法技术。方法的名称及其参数都是合在一起的。例如,你可以这样调用一个参数的方法:

  [circle setFillColor: kRedColor];

  带两个参数的方法调用如下所示:

  [textThing setStringValue: @"hello there" color: kBlueColor]; //以上代码出自原书,无上下文,变参命名不规范,是我肯定不这么干(14日学习新篇章发现这么写是对的,set前缀的是setter方法的,而后两个是参数

  setStringValue:和color:实际上是参数的名称(实际上是方法名称的一部分)。

  Objective-C中使用@implementation来声明类实现的开始,后面跟着实现的类名,同样以@end来声明类实现的结束,当然你愿意的话也请在背后加上类的注释,起码标上类名。

  Objectvie-C的类实现部份中可以单独实现方法而不用在接口声明,但它同样不是私有的,Objective-C中不存在真正的私有方法。这是Objective-C动态本质的副作用。

  以下简单示范:

  @implementation

  - (ReturnType) ClassMethodName1: (VarType) ParamateAlias

  {

    //use Paramate todo something

  }

  @end

  为毛是ParamateAlias?原因是我们已经通过类定义了一个名为ParamateName的实例变量,可以在该方法中引用该变量-它在作用域范围中。因此,如果使用相同的名称定义另一个 ,编译器将会阻止我们访问该实例变量。使用相同的变量名会隐藏初始变量,可以为参数使用新的名称来避免该问题。

  书中在这一章提到了OO大湿Bertrand Meyer的开放|关闭原则(Open/Closed Principle),即软件实体应该对扩展开放,而对修改关闭。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: