Chapter 3 Classes,Objects,and Methods

使用类或者对象的方法的语法是这样的:
[类名/对象名 方法名]
如果涉及到参数,则变成如下形式:
[类名/对象名 方法名:参数]
也可以用带有返回值的方法给变量赋值:


The @interface Section
这实际上就是类的声明式,它的一般形式如下所示:
Chapter 3 Classes,Objects,and Methods_第1张图片

在Objective-C中类名的第一个字母要求大写。
ChoosingNames
变量还可以存储对象,这是Objective-C的特性。
变量名可以是数字、字母、下划线的组合,不过第一位必须是字母或者下划线,变量名不可以是Objective-C保留字。
变量一般是以小写字母开头的,以后每遇到一个单词,该单词的首字母要大写,这一点像JAVA的命名规范。
下面是一个@interface的示例代码:
Chapter 3 Classes,Objects,and Methods_第2张图片

Objective-C也是有头文件的,并且也是以.h结尾的,这一点和C语言是完全一致的。
Class and Instance Method

注意!在方法声明的时候它前边有个-号,-代表这个方法是个实例对象的方法。与此相对应方法声明前的+代表,该方法是类方法。
所谓类方法就是对类本身进行操作的方法,比如产生一个类的实例。
而所谓实例方法就是对某实例对象本身的操作。
由此可见前者体现类的共性,后者体现类的个性。
Chapter 3 Classes,Objects,and Methods_第3张图片

上图中箭头所指之处是方法的返回值类型。
MethodArguments
Chapter 3 Classes,Objects,and Methods_第4张图片

红线所示部分是参数,括号中的是类型,n和d是形参,它们与方法名之间用冒号相连,整个声明以分号结尾。
当你想引用一个有参数的函数时可以在函数名后添加冒号,这个冒号表示这个函数带有参数。

如果没有参数就不需要冒号。
The @implementation Section
类成员的声明和定义形式如下:
Chapter 3 Classes,Objects,and Methods_第5张图片

类成员声明的形式如下所示:
Chapter 3 Classes,Objects,and Methods_第6张图片

可以看出这和C++没啥两样。
和实例方法一样,它们也属于某个实例对象,即每个实例对象都会有自己的实例成员。
Chapter 3 Classes,Objects,and Methods_第7张图片

方法的定义部分如上图所示。
此外Objective-C允许使用@synthesize指令自动产生方法,这个将在第七章讲到。
The program Section

书中说这是个对象,但是现在没清楚地说明,只是说留到以后再解释,我想这应该是个指针。
在Objective-C中对象空间的分配和初始化一般合在一起写,如下图所示:

也可以写成这样:

给函数传实参的形式是这样的:

调用成员方法的形式如下所示:

如果,在myFraction前面的*表示myFraction是个指针。
Accessing Instance Variable and Data Encapsulation
对象自己的方法可以直接访问自己的成员,但是类的方法无法访问,这一点和C++有很大的不同。
面向对象语言的惯用法中总有getters和setters,它们并不是语法,而是纯的惯用法。
它们都是成员方法,并且都是公有的,或者说外部能直接调用的接口。正是因为这一特性,它们能够操作私有成员,并且能返回私有成员。setters就是用来设置私有成员的,而getters则是用来获取私有成员的。setters带有参数没有返回值,而getters没有参数但有返回值。
这也是数据封装的一个原则,必须遵守。

你可能感兴趣的:(Chapter 3 Classes,Objects,and Methods)