您的位置:首页 > 移动开发 > Objective-C

OBJ-C实例变量修饰符;私有变量;私有方法;description;多态;点语法学习笔记

2016-04-29 04:04 323 查看
==============================================================================

           实例变量修饰符;私有变量;私有方法;description;多态;点语法

==============================================================================

实例变量的作用域

访问修饰符:

public:公开的,在任何电放通过实例对象都可以访问;任意程序集可用;

protected:受保护类型,表示只能在当前类和子类中访问;同一类和派生类可用;

private:私有的,表示只能在当前类中被访问;同一类可用;

------------------------------------------------------

注意:

1.子类可以继承父类的所有的实例变量和方法;但是,不是所有的都可以访问;

2.在@interface @end之间声明的成员变量如果不坐特别的说明,那么其默认是@protected。

==========================================================================

OC中的私有变量

例:int m = 10;

    @implementation

    @end

上例中定义的m即在.m中定义实例变量,

为纯私有的变量,该变量只能在当前类中使用,不能被子类继承,也不能被访问。

-----------------------------------------------------------------------------

OC中的私有方法

在.h中没有声明,在.m中实现的方法,为私有方法。

私有方法可以在实现中用self访问;

============================================================================

description方法介绍及重写

description方法概述

Dog * dog = [[Dog alloc] init];

NSLog(@"%@",dog);

打印出来默认为  Dog:dog的首地址。是对象dog的信息

-------------------------------------------------------------------------

description打印类信息

Dog * dog = [[Dog alloc] init];

NSLog(@"%@",[dog class]);

-------------------------------------------------------------------------

description陷阱

千万不要在description方法中同时使用%@和self,程序会陷入死循环。

==============================================================================

多态的概念和条件

什么是多态?

不同的对象以自己的方式响应相同名称方法的能力成为多态。

--------------------------------------------------------

多态的条件

1.有继承关系;

2.有方法重写;

3.父类的声明变量指向子类对象;

代码体现:用父类类型的指针指向了子类对象,这就是多态。

-------------------------------------------------------------------

多态的优点

多态的主要好处就是简化了编程接口,它容许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类区分开。

多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象。这样使得您的代码扩展性和复用性更好一些。当一个新的情景出现时,您无需对现有的代码进行改动,而只需要增加一个新的类和新的同名方法。

---------------------------------------------------------------------------

多态的实现

简单来说,就是父类的同一个方法声明,但父类和子类各自以自己的方式实现,而且方法名相同。

多态的使用:Animal * p = [Dog new];(父类指针指向子类对象)

---------------------------

多态的原理

动态绑定:

1. 动态类型能使程序直到执行时才确定对象所属类型

2. 

动态类型绑定能使程序直到执行时才确定要对对象调用的实际方法

3. OC不同于传统程序设计语言,它可以再运行时加入新的数据类型和新的程序模块:动态类型识别,动态   绑定,动态加载 

Id类型:通用指针类型,弱类型,编译时不进行类型检查

----------------------------------------------------------------

多态的注意点:

1.如果存在多态,父类是可以访问子类特有的方法;

=============================================================================

类的本质:其实是个对象

类对象属于class类型

类对象的获取方法:

1.通过实例对象来获取;

                   Class c1 = [d class];

2.通过类名来获取类对象;

                   Class c2 = [Dog class];

===========================================================================

SEL类型

例: Person *p = [[Person alloc] init];

     [p test];

寻找方法的过程:

1.首先把test这个方法名包装成sel类型的数据;

2.根据sel数据找到对应的方法地址;

3.根据方法地址调用响应的方法;

4.注意:在这个操作过程中有缓存,第一次找的时候是一个一个的找,非常耗性能,之后再用到的时候  就直接使用;

==================================================================================

点语法介绍和使用:

例如:1.

        p.age = 18;会自动替换成[p setAge:18],即调用set方法;

        不是直接访问,其实还是通过对象方法间接访问。

      2. 

        int a = [p age];

        NSString *s = [p name];

        注意,此处的p.age出现在了等号的右侧,此时会把p.age替换成[p age],即调用get方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  objective-c