IOS学习笔记 (二)类和对象

来源:互联网 发布:移动硬盘和mac不兼容 编辑:程序博客网 时间:2024/05/22 13:24

 面向对象(Object-Oriented Programming)的首字母缩写:OOP   


1、类定义

     在Xcode中添加文件,选择Cocoa Class 或者Cocoa Touch Class,默认生成如下两个文件


    Person.h 

       

      

    Person.m  

      

     

在Objective-C中定义一个类需要两个文件.h和.m:

  • .h文件:放类的声明,包括成员变量、属性和方法声明(事实上.h文件不参与编译过程);关键字@interface声明一个类,同时它必须以@end结束,在这两个关键字中间声明相关成员;在声明Person类的同时可以看到它继承于NSObject,这是Objective-C的基类,所有的类最终都继承于这个类(但是需要注意Objective-C中的基类或者根类并不只有一个,例如NSProxy也是Objective-C的基类),由于这个类在Foundation框架中定义,所以导入了<Foundation/Foundaton.h>(意思是导入Foundation框架中的Foundation.h声明文件); 
  • .m文件:放属性、方法的具体实现;关键字@implementation用于实现某个类,同时必须以@end结尾,在这两个关键字中间实现具体的属性、方法;由于.m中使用了Person类,所以需要导入声明文件“Person.h”;
2、成员变量

     成员变量定义在.h文件中,
    

     

   成员的可访问性通过下面四个关键字声明

    (1)@private 私有成员,只有当前类可以访问;

    (2)@protected 受保护成员,只有当前类或子类可以访问,如果没有添加任何修饰则默认为@protected;

    (3)@public 公共成员,所有类均可访问;

    (4)@package不太常用,它类似于C#中的internal在框架内是公共的,但是框架外是私有的(也就是只能在一个框架内可以访问)



注意:

     

(1)ObjC中所有的对象类型的变量都必须加上“*”,ObjC中对象其实就是一个指针(例如之前看到的NSString也是如此,但是基本类型不用加”*”);

(2)Objective-C中使用[]进行方法调用,在Objective-C中方法调用的本质就是给这个对象或类发送一个消息;

        

  (3)在Objective-C中类的实例化需要两个步骤:分配内存、初始化;

  (4)类的初始化调用了父类的init方法,如果使用默认初始化方法进行初始化(没有参数),内存分配和初始化可以简写成[Person new]

      

  (5)公共成员的调用使用“->”操作符;

      


3、方法和属性

    Objective-C中方法分为静态方法和动态方法两种,这一点跟其他高级语言没有区别。在Objective-C中使用“-”定义动态方法,使用“+”定义静态方法。如果一个方法在.h中有声明则该方法是公共方法,如果没有在.h中声明直接在.m中定义则该方法是私有方法,外部无法访问。 

   .h

   

   .m

   
 2个参数实现方法如下
 
Objective-C中属性的实现方式其实类似于Java中属性定义,通过对应的setter和getter方法进行实现,如phonenum

  .h


.m



未完待续

     
0 0
原创粉丝点击