• 小白学开发(iOS)OC_ 使用继承来扩充类(2015-08-07)


    //

    //  main.m

    //  使用继承来扩充类

    //

    //  Created by admin on 15/8/12.

    //  Copyright (c) 2015 admin. All rights reserved.

    //

    /*

        当在一个类中有太多的方法会显得很复杂。为了清楚表示。我们能够创建类的一个分类(category)来扩充这个类

        在其它面向对象语言中,使用继承关系类扩充一个类。然而这样最大的坏处就是耦合性太高

        OC使用(category)来扩充一个类

     

     注意:1. 仅仅要在原类中生成的成员变量(私有变量除外)在分类中都可直接訪问

          2. 假设在分类中定义实现类了与原类同名的方法,那么原类中的方法相当于被覆盖掉了(实际开发中。最好不要出现方法覆盖)

          3. 不能在分类中定义成员变量,仅仅能添加方法

     */

    #import <Foundation/Foundation.h>

    #import "Person.h"

    #import "Person+BlackPerson.h"


    int main(int argc, const char * argv[]) {

        @autoreleasepool {

            

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

            [p eat];// 这里调用了eat方法,执行可见是打印黑人吃东西,所以方法被覆盖了

            

        }

        return 0;

    }

    //

    //  Person.h

    //  OC的特有语法

    //

    //  Created by admin on 15/8/12.

    //  Copyright (c) 2015 admin. All rights reserved.

    //


    #import <Foundation/Foundation.h>


    @interface Person : NSObject

    {

        int _age;

    }

    @property (nonatomic,assign)int age1;

    @property (nonatomic,strong)NSString *name;


    //人类的基本方法

    - (void)eat;

    - (void)drink;

    - (void)smile;


    @end

    //

    //  Person.m

    //  OC的特有语法

    //

    //  Created by admin on 15/8/12.

    //  Copyright (c) 2015 admin. All rights reserved.

    //


    #import "Person.h"


    @implementation Person


    - (void)eat

    {

        NSLog(@"人类吃东西");

    }

    - (void)drink

    {

        NSLog(@"人类喝东西");

    }

    - (void)smile

    {

        NSLog(@"人类微笑");

    }


    @end


    //

    //  Person+BlackPerson.h

    //  OC的特有语法

    //

    //  Created by admin on 15/8/12.

    //  Copyright (c) 2015 admin. All rights reserved.

    //


    #import "Person.h"


    @interface Person (BlackPerson)


    - (void)popping;

    - (void)eat1;    //  这里 覆盖了Person类中的eat方法


    @end


    //

    //  Person+BlackPerson.m

    //  OC的特有语法

    //

    //  Created by admin on 15/8/12.

    //  Copyright (c) 2015 admin. All rights reserved.

    //


    #import "Person+BlackPerson.h"


    @implementation Person (BlackPerson)


    - (void)popping

    {

        [self eat];

        _age = 50 // 分类中能够直接调用原类中的成员变量

        NSLog(@"黑人非常会跳舞");

    }


    - (void)eat1

    {

        NSLog(@"黑人吃东西");

    }




    @end




  • 相关阅读:
    解决Java版CKFinder无法显示缩略图问题
    python视频教程大全
    关于Linux vi命令 vi命令一览表
    Python快速教程
    Linux的概念与体系
    每天一个linux命令目录
    每天一个linux命令(31): /etc/group文件详解
    每天一个linux命令(30): chown命令
    每天一个linux命令(29):chgrp命令
    十大Material Design开源项目
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7020301.html
Copyright © 2020-2023  润新知