美文网首页
OC基础--->类 和 对象

OC基础--->类 和 对象

作者: b8028f13eaa2 | 来源:发表于2016-05-18 21:18 被阅读42次

    --------->实例1、类的 特征、方法 的声明和实现<----------

    A--->Teacher 为自定义类名 :command + n 选择Cocoa Touch Class

    B--->NSObject 为父类名 :为Foundation框架下的一个根类( 即没有父类 )

    @interface Teacher : NSObject

    {

    C--->声明Teacher类创建的对象拥有的实例变量

           1)、"_"是 官方 推荐的写法,以便于区分

           2)类型名 “*”_ 实例变量名   表示创建的是对应类型的指针

    NSString *_name;

    NSString *_gender;

    NSInteger  _age;

    }

    //D--->方法的声明 : 1)、类似于C的函数 

                                   2)、“-”表示对象方法,只有对象可以调用

    - (void)teaching; 

    - (void)getSalary;

    @impementation Teacher

    - (void)teaching{

    NSLog(@"我正在进行教学活动");

    }

    -(void)getSalary{

    NSLog(@"这个月发的不少,可以吃大餐了");

    }

    @end

    E--->创建一个类--->OS X -->Sourse-->CocoaClass &Next--->(Class):Teacher; ( SubClass of ) NSObject;

    (Language):Objective-C --->Teacher.h &Teacher.m

    F--->1、类的定义过程需要进行分文件放置。文件分为 .h  (接口文件) 和 .m (实现文件)。

    2、1)要使用类名命名文件。 2).h 文件管理类的接口部分; .m 文件管理类的实现部分

    3、只要符合类的接口部分和类的实现部分的定义,就可以定义出一个类

    4、文件中可以定义出多个类,但是文件的名字以类名命名。所以不提倡使用这中方式。 例如: Person文件中定义一个 Dog 类

    G--->1、类是一个抽象的概念,在实际开发中程序的运行是通过对象间的相互协作来完成。

    2、对象是类的实例,通过类来创建对象

    3、创建对象步骤:1)、分配内存空间:根据类中声明的实例变量为对象在  堆区  分配内存,并返回首地址 2) 初始化:为对象的实例变量设置初始值

    H---> 1) 、对象的创建: 分配内存空间,并且将内存空间数据清0

    Teacher *teacher = [Teacher alloc]

    teacher = [teacher init];

    2)、Teacher *teacher = [[Teacher alloc]init];

    I--->开辟空间

    1)  +(instancetype)alloc;1)、“+” 表示方法是类方法,只能由类调用。 instancetype 返回值类型,可以用 id (任意对象类型)替代

    2)初始化 -  ( instancetype ) init ; "-" 对象方法, 对象调用。 “instancetype” 返回值类型

    J ---> instancetype 和 id 的区别

    1)instancetype 可以返回和方法所在类相同类型的对象, id 只能返回未知类型的对象

    2) instancetype 只能作为返回值和参数, id 还可以用来定义变量

    3)instancetype 会告诉编译器当前的类型,但 id 对于编译器却是无类型的,调用任何方法不会给出错误提示。

    4)对于 init 方法,id 和 instancetype 是没有区别的。因为编译器会把 id 优化成 instancetype 。当明确返回的类型就是当前 Class 时,使用 instancetype 能避免 id 带来的编译不出的错误情况

    J ----> 对象的创建

    Teacher *teacher = [ [ Teacher alloc ] init ];

    1) teacher 对象是一个指针 ,存储对象的首地址,代指对象

    2)真正的对象在堆区空间 :_name _gender _age ...

    K ---- > 对实例变量的操作

    1)实例变量在初始化时只做少量设置,如果在程序运行过程中需要设置,我们需要对实例变量进行@public修饰

    2)@public 实例变量访问修饰符 (共有)。被其修饰的实力变量外界可以通过  对象 ->实例变量  访问并且修改

    L ----> 三种可见度的区别

                         本类                       子类                       其他类  

    @public    可以直接访问        可以直接访问        可以直接访问   

                    实例变量                实例变量               实例变量

    @private    可以直接访问     不可以直接访问    不可以直接访问

                      实例变量          实例变量              实例变量

    @prectected 可以直接访问    可以直接访问     不可以直接访问

                        实例变量          实例变量          实例变量

    1)实例变量默认可见度 @protected, 外界无法访问

    M ----> OC 中的方法分为两种:类方法 ( + 号 )和实例方法 ( - 号 )

    1)类方法:只能被雷使用,例如:+ ( instancetype )alloc;

    类方法中不能使用实例变量。

    2)实例方法:只能对象使用,例如 - ( instancetype )init;

    N ---- > 方法的声明

    O ---- > 如何获取方法的方法名

    删除 : 类型标识,返回类型,参数类型,参数名,空格

    上面的方法名为 : replaceObjectAtIndex:WithObject:

    1)一个类中不能出现同名方法

    2)“ : ” 标识参数,不能省略。有冒号必须有参数。

    3)冒号属于方法名的一部分

    P ---- > 方法的声明

    声明一个多参数的方法

    - (void)setName : ( NSString *) name  gender : ( NSString * ) gender  age : ( NSUInteger ) age;

    Q ---- > 方法的使用

    在 OC 中使用消息发送机制 : [receiver message]

    [ teacher  getSalary ];

    1) 给 teacher 对象发送 getSalary 消息

    2)teacher 接收到消息, 即方法 getSalary 

    3) teacher 找到 getSalary 方法, 并执行

    L ---- > setter 和 setter 方法

    1)在 OC 里, 为  单一  实例变量赋值的方法称作setter (设置器)

    2)获取单一实例变量值得方法称作 getter (访问器)

    L ---- > setter 和 getter 方法的书写格式

    1)OC 中规定了 setter 和 getter 方法的书写格式

    比如:实例变量 NSUInteger _age

    setter 的书写格式: - (void)setAge : (NSUInteger)age;

    即 set + 首字母大写的实例变量名 (忽略下划线)

    getter的书写格式: - (NSUInteger)age;

    即返回值类型与变量类型一致,方法名与实例变量名相同(忽略下划线)

    R ---- > setter 与 getter 同实例变量的关系

    1)无论 setter 和getter 内部操作的是实例变量

    2)每一个实例变量都需要一对 setter 和 getter 方法

    S-------->小结

    1)面对对象和面对过程的区别:两种不同的编程思想,思考角度不同 : 前者以对象为中心,后者以事件为中心

    2)类是对象的抽象,对象是类的实例。 面对对象编程:县穿件对应的类,再由类生成对象,完成开发

    3)类包含接口和实现两部分。对象创建分两步:创建对象,初始化。

    4)实例变量三种可见度:@public\@protected\@private

    5)方法是 OC 的核心 ,采用消息机制【receiver message】

    6)"-" message 由对象来调用; “+” message 由类来调用

    7)setter 和 getter 方法 访问的是单一实例变量

    相关文章

      网友评论

          本文标题:OC基础--->类 和 对象

          本文链接:https://www.haomeiwen.com/subject/ucvwrttx.html