zoukankan      html  css  js  c++  java
  • 类目 延展

         类目:类目可以为一个现有的类扩展新的方法,扩展的方法会成为原始类的一部分

         声明一个类时,有实例变量和方法,而如果事后想增加方法的话直接在类里面添加感觉会显得杂乱无章,如果创建一个子类的话,层级多了会糊涂掉。至此,类目诞生。

        在类目的实现部分不能添加成员变量,类目没有位置容纳实例变量。

        类目中的实现方法可以使用类的属性(成员变量)。

        父类中类目,子类可以用关键字super进行调用。

        类目的方法名不能与类的方法名相同,若相同就会进行复写,类里面的方法就不在调用

          延展的作用就是定义自己的私有方法。

         延展就是C语言中的前向申明,如果你想调用一个函数的话,那么在此之前必须要声明一个这个函数

        

    //类目代码 

    #import <Foundation/Foundation.h>

    #import "NSString+Email.h"

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

        @autoreleasepool {

            // insert code here...

            NSLog(@"Hello, World!");

            

            NSString *email=@"1234567@qq.com";

            BOOL same=[email emiale];

            if (same==YES) {

                NSLog(@"正确");

            }else{

            

                NSLog(@"不正确");

            }

        }

        return 0;

    }

     

    #import <Foundation/Foundation.h>

     

    @interface NSString (Email)

     

    -(bool) emiale;

     

     

    @end

     

    #import "NSString+Email.h"

     

    @implementation NSString (Email)

    -(bool) emiale

    {

        NSRange range=[self rangeOfString:@"@"];

        if (range.location !=NSNotFound) {

            return YES;

        }

        return  NO;

    }

     

    @end

     

     

    //延展

    #import <Foundation/Foundation.h>

    #import "Person.h"

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

        @autoreleasepool {

            // insert code here...

            NSLog(@"Hello, World!");

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

            [person work];

        

        }

        return 0;

     

    }

    #import <Foundation/Foundation.h>

     

    @interface Person : NSObject

    -(void)work;

     

    @end

     

     

    #import "Person.h"

    //延展的定义

    //私有的

    @interfacePerson( )

    -(void)sleep;

    @end

    @implementation Person

    -(void)work{

        NSLog(@"工作");

        [self sleep];

    }

    //延展的实现

    -(void)sleep{

        NSLog(@"睡觉");

    }

     

    @end

     

     

  • 相关阅读:
    【转】滑动窗口与拥塞控制
    LeetCode 34 :Find First and Last Position of Element in Sorted Array
    主要电商模式介绍
    使用springboot创建邮件服务器
    解决Windows下端口占用问题
    [leetcode]给定二维平面上的n个点,找出位于同一直线上的点的最大数目
    获得超类的泛型参数在子类实例化传入的实际类型
    构造单例的五种方法
    20162308 2017-2018-2 《程序设计与数据结构》第11周学习总结
    20162308 2017-2018-2 《程序设计与数据结构》第十周学习总结
  • 原文地址:https://www.cnblogs.com/lcl15/p/4919898.html
Copyright © 2011-2022 走看看