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

黑马程序员——Objective-C的封装、继承与多态

2014-12-30 14:08 363 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、什么是封装、继承、多态

【1】封装就是在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问,将抽象得到的属性和行为相结合,形成一个整体。

【2】继承在OC中指一个子类拥有父类的所有成员变量和方法,我们称这个子类继承了它的父类。OC中的继承是单继承,即一个子类只能有一个父类。

【3】多态是建立在继承的基础上的,没有继承就没有多态。多态指的是在程序中父类的指针也可以指向子类对象的特性。

2、封装、继承、多态的优点

【1】封装的好处在于控制了程序中属性的读写权限和过滤条件,使属性的访问更加安全方便;

【2】继承的好处是建立了类与类之间的关系,增强了代码的可读性,并且减少了冗余代码的数量。

【3】多态的好处在于使得方法的实现更加便捷,可以使用父类的指针调用多种子类对象。增强代码的重用性,并使得代码的编写更加灵活。

3、封装的细节

【1】封装中一般不声明@public类型的成员变量,@public允许在任何作用域内修改变量的值;

成员变量的三种类型:

a)@public        作用范围为任何地方

b)@protected   作用范围为本类和子类(此为默认值)

c)@private       作用范围为本类

官方图示如下:



【2】成员变量名一般以"_"开头,优点是:可以方便辨识一般变量和成员变量,并且方便辨识get()方法名和成员变量;

【3】封装中常用的get()和set()方法:

                a)set()方法:

                                作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤(见例程1);

                                命名规范:

                                                                1>方法名必须以set开头
                                                                2> set后面跟上成员变量的名称,成员变量的首字母必须大写
                                                                3>返回值一定是void
                                                                4>一定要接收一个参数,而且参数类型跟成员变量类型一致
                                                                5>形参的名称不能跟成员变量名一样
                b)get()方法:

                                     作用:返回对象内部的成员变量(见例程2);
                                     命名规范:
                                                                1>肯定有返回值,返回值类型肯定与成员变量类型一致
                                                              2>
方法名跟成员变量名一样
                                                               3>
不接收任何参数

// 例程1 set方法的实现
- (void)setAge:(int)newAge
{
// 对传进来的参数进行过滤
if (newAge <= 0)
{
newAge = 1;
}

age = newAge;
}

// 例程2 get方法的实现
- (int)age
{
return age;
}

【4】类方法与对象方法

        对象方法:
                1>
“-” 开头
                2>
只能由对象调用
                3>
对象方法中能访问当前对象的成员变量
 
        类方法:
                1> “+” 开头
                2>
只能由类调用
                3>
类方法中不能访问成员变量
 
        类方法的好处和使用场合
                1>
不依赖于对象,执行效率高
   
            2> 能用类方法,尽量用类方法
     
          3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法
 
可以允许出现类方法和对象方法的方法名相同,但出于可读性考虑尽量不要这么起名。

【5】方法名起名与声明规范
 a)不带入形参的方法名



b)包涵1个形参的方法名



c)包涵多个形参的方法名



4、继承的细节
注意点:

        1> 父类必须声明在子类的前面
        2> 子类不能拥有和父类相同的成员变量
        3> 调用某个方法时,优先去当前类中找,如果找不到,去父类中找

重写的定义:子类重新实现父类中的某个方法,覆盖父类以前的做法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息