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

本文详细解析了面向对象编程中的封装、继承与多态三大核心概念。介绍了它们的基本定义、优势及具体应用细节,帮助读者深入理解面向对象编程的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------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> 调用某个方法时,优先去当前类中找,如果找不到,去父类中找

重写的定义:子类重新实现父类中的某个方法,覆盖父类以前的做法。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值