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

     

     

  • 相关阅读:
    请输入关键字
    如何把心动变成行动
    理解ASP.NET MVC系列之一:ASP.NET MVC基于MVC设计模式
    window.showModalDialog()
    visual studio 2010 winform程序不能添加对system.web的引用[转载]
    理解ASP.NET MVC系列之三:从URL到Route
    Dan计划:重新定义人生的10000个小时
    为Visual Studio添加配色方案
    [转载]用缓存服务器负载均衡 提数据库查询效率
    Json的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/lcl15/p/4919898.html
Copyright © 2011-2022 走看看