zoukankan      html  css  js  c++  java
  • 小白学开发(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




  • 相关阅读:
    robotframework安装与配置--学习第一天
    Google chrome浏览器打不开网页,显示ERR_Failed...等问题的解决方法
    解决dos窗口乱码问题
    打印风车旋转效果
    spring Security 得到认证用户名的方法
    spring requestmapping 拦截多个请求
    github多人协同使用。
    Spring boot Security 用于权限管理,用户添加等。
    spring boot上传 下载图片。
    mysql修改数据库编码(数据库字符集)和表的字符编码的方法
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7020301.html
Copyright © 2011-2022 走看看