黑马程序员技术交流社区

标题: 类和方法 [打印本页]

作者: 牛角尖、    时间: 2015-12-17 17:14
标题: 类和方法
类 
接口和实现 
Objective-C的类分为接口定义和实现两个部分。接口定义(Interface)放在头文件中,文件扩展名是.h,实现(implementation)放在实现文件中,文件扩展名是.m(也有.mm的扩展名,表示Objective-C和C++混编的代码)。 
接口定义也可以写在.m文件中,但最好不要这么干 
需要注意的是,与Objective-C的interface概念最接近的是C和C++里的头文件,它与implementation是成双成对出现的,作用是声明类的成员变量和方法。它与Java的interface概念完全不同: 
 
Objective-C里,interface有且只有一个实现,Java的interface可以有0-N个实现 
 Objective-C里,interface可以定义成员属性,Java里不可以 
在Objective-C里,和Java的Interface概念相似的是Protocol,下文会讲到。 请看示例: Interface 
@interface MyClass {     int memberVar1;     id  memberVar2; } 









 
-(return_type) instance_method1;  
-(return_type) instance_method2: (int) p1; 
-(return_type) instance_method3: (int) p1 andPar: (int) p2; @end 
Implementation 
@implementation MyClass {     int memberVar3; }  
-(return_type) instance_method1 {     .... } 
-(return_type) instance_method2: (int) p1 {     .... } 
-(return_type) instance_method3: (int) p1 andPar: (int) p2 {     .... } @end 
接口和实现以@interface、@implementation开头,都以@end结束。“@”符号在Objective-C中是个很神奇的符号。 
冒号也是方法名的一部分,method和method:是两个不同的方法名,不是overload,第二个带参数。 上述代码对应的Java版: 
public class MyClass {     protected int memberVar1;     protected pointer memberVar2;     private int memberVar3;  
    public (return_type) instance_method1() {         ....     }  
    public (return_type) instance_method2(int p1) {         ....     }  
    public (return_type) instance_method3andPar(int p1, int p2) { 









        ....     } } 
私有方法和公开方法 
写在.h头文件里的方法都是公开的,Objective-C里没有私有方法的概念(没有你说个蛋啊,哈哈哈哈)。 
官方并没有提到Objective-C怎么实现私有方法,我查阅了stackoverflow,统一的答案是,要实现私有方法的效果只能借助Category,不过,根据我的测试,即使采用了Category,也不能阻止外部的代码调用这个“私有方法”,只是Xcode不支持“私有方法”的自动完成,并会有警告提示,运行的时候,还是会成功的。各位看官知道有这么回事就可以了
作者: 学习黑马精神    时间: 2015-12-17 17:48
非常好!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2