美文网首页
OC语言day07-01协议基本概念

OC语言day07-01协议基本概念

作者: liyuhong165 | 来源:发表于2016-06-30 23:24 被阅读47次

    pragma mark 协议基本概念

    pragma mark 概念

    /**
     1.protocol基本概念
     > Protocol 叫做"协议"
    
     >Protocol作用
     用来声明一些方法
     也就是说,一个Protocol是有一系列的方法声明组成的
     
     2.protocol 语法格式
     > Protocol的定义
     
     @protocol 协议名称
     // 方法声明列表
     @end
     
     > 类遵循协议
        一个类 可以遵守1个或者多个协议
        任何类 只要遵守了Protocol, 就相当于拥有了 Protocol的所有方法声明
     
     @interface 类名 : 父类 <协议名称>
     @end
     
    3.protocol和继承的区别
     继承之后 默认就有了实现, 而protocol只和声明没有实现
     相同类型的类 可以使用 继承, 但是不同的类型只能使用protocol
     protocol 可以用于 存储方法的声明,  可以将多个类中共同的方法抽取出来,以后这些开发遵守协议即可
     */
    

    pragma mark 代码

    #import <Foundation/Foundation.h>
    #pragma mark 类
    #import "Person.h"
    #import "Student.h"
    #import "Teacher.h"
    #pragma mark main函数
    int main(int argc, const char * argv[])
    {
        Person *p = [[Person alloc]init];
        [p playFootball];
        [p playBasketBall];
        [p playBaseBall];
        
        Student *s = [[Student alloc]init];
        [s playFootball];
        
        Teacher *t = [[Teacher alloc]init];
        [t playFootball];
        
        return 0;
    }
    
    
    
    Person.h //人类
    #import <Foundation/Foundation.h>
    #import "SportProtocol.h"
    @interface Person : NSObject <SportProtocol>
    
    //- (void)playFootball;
    @end
    
    Person.m
    #import "Person.h"
    
    @implementation Person
    - (void)playFootball
    {
        NSLog(@"%s",__func__);
    }
    
    -(void)playBaseBall
    {
        NSLog(@"%s",__func__);
    }
    
    -(void)playBasketBall
    {
        NSLog(@"%s",__func__);
    
    }
    @end
    

    Student.h //学生类
    #import <Foundation/Foundation.h>
    #import "SportProtocol.h"
    @interface Person : NSObject <SportProtocol>
    
    //- (void)playFootball;
    @end
    
    Student.m
    @implementation Student
    - (void)playFootball
    {
        NSLog(@"s %s",__func__);
    }
    
    -(void)playBaseBall
    {
        NSLog(@"s %s",__func__);
    }
    
    -(void)playBasketBall
    {
        NSLog(@"s %s",__func__);
        
    }
    @end
    

    Teacher.h // 教师类
    #import <Foundation/Foundation.h>
    #import "SportProtocol.h"
    @interface Teacher : NSObject <SportProtocol>
    
    @end
    
    Teacher.m
    #import "Teacher.h"
    
    @implementation Teacher
    
    - (void)playFootball
    {
        NSLog(@"t %s",__func__);
    }
    
    -(void)playBaseBall
    {
        NSLog(@"t %s",__func__);
    }
    
    -(void)playBasketBall
    {
        NSLog(@"t %s",__func__);
        
    }
    
    @end
    

    Dog.h //狗类
    #import <Foundation/Foundation.h>
    #import "SportProtocol.h"
    @interface Dog : NSObject<SportProtocol>
    
    @end
    
    Dog.m
    #import "Dog.h"
    
    @implementation Dog
    - (void)playFootball
    {
        NSLog(@"d %s",__func__);
    }
    
    -(void)playBaseBall
    {
        NSLog(@"d %s",__func__);
    }
    
    -(void)playBasketBall
    {
        NSLog(@"d %s",__func__);
        
    }
    @end
    

    相关文章

      网友评论

          本文标题:OC语言day07-01协议基本概念

          本文链接:https://www.haomeiwen.com/subject/bnsfjttx.html