oc64--协议[email protected]

//
//  SportProtocol.h
//  day17
//

#import <Foundation/Foundation.h>

@protocol SportProtocol <NSObject>  //NSObject是默认的协议类,每个协议都要继承NSObject基协议。不写也可以。

// 1.协议只能声明方法, 不能声明属性(跟分类一样)
//{
//    int  _age;
//}

// 方法声明列表
// 2.注意: 如果没有使用任何关键字修饰协议中的方法, 那么该方法默认就是required的
@required
// 如果协议中的方法是@required的, 而遵守协议的类又没有实现该方法, 那么会报一个警告(不是报错)
- (void)playFootball;

@optional // 可选
// 3.如果协议中的方法是@optional的, 而遵守协议的类又没有实现该方法, 那么不会报警告
- (void)playBasketball;
- (void)playBaseball;
// 注意:@required和@optional仅仅使用程序员之间交流, 并不能严格的控制某一个遵守该协议的类必须要实现该方法, 因为即便不是实现也不会报错, 只会报一个警告,

//废材一个废材一个。废材一个废材一个废材一个废材一个废材一个废材一个。

@end
//
//  CrazySportProtocol.h
//  day17

#import <Foundation/Foundation.h>
#import "SportProtocol.h"

// 4.OC中的协议又可以遵守其它协议, 只要一个协议遵守了其它协议, 那么这个协议中就会自动包含其它协议的声明
@protocol CrazySportProtocol <SportProtocol>
// 跳舞
- (void)jumping;
@end
//
//  StudyProtocol.h
//  day17

#import <Foundation/Foundation.h>

@protocol StudyProtocol <NSObject>

- (void)study;
@end
//
//  Person.h
//  day17

#import <Foundation/Foundation.h>
#import "SportProtocol.h"
#import "StudyProtocol.h"

// 3.在OC中一个类可以遵守1个或多个协议
// 注意: OC中的类只能有一个父类, 也就是说OC只有单继承(如果2个父类有同名的方法,那么子类就不知道调用哪个方法了。如果父类和爷爷类有同名的方法,子类调用会先去父类找,找不到再去爷爷类找。)
@interface Person : NSObject<SportProtocol, StudyProtocol>

@end
//
//  Person.m
//  day17

#import "Person.h"

@implementation Person
- (void)playFootball
{
    NSLog(@"%s", __func__);
}

//- (void)playBasketball    如果是required,而没有实现,
//{
//    NSLog(@"%s", __func__);
//}
//
//- (void)playBaseball
//{
//    NSLog(@"%s", __func__);
//}

- (void)study
{
    NSLog(@"%s", __func__);
}
@end
//
//  Sutdent.h
//  day17

#import "Person.h"

// 5.父类遵守了某个协议, 那么子类也会自动遵守这个协议(也有方法的声明)。
@interface Sutdent : Person

@end
//
//  Sutdent.m
//  day17

#import "Sutdent.h"

@implementation Sutdent

- (void)playBasketball
{
    NSLog(@"%s", __func__);
}
@end
//
//  main.m
//  protocol注意点
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Sutdent.h"

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

    Person *p = [Person new];
    [p playBasketball];
    [p study];

    Sutdent *stu = [Sutdent new];
    [stu playBasketball];

    return 0;
}
时间: 2024-11-06 04:18:54

oc64--协议[email protected]的相关文章

15-02-28-协议[email&#160;protected] 接口

// //  main.m //  05-protoco // //  Created by apple on 13-8-11. //  Copyright (c) 2013年 itcast. All rights reserved. // /* 1.协议的定义 @protocol 协议名称 <NSObject> // 方法声明列表.... @end 2.如何遵守协议 1> 类遵守协议 @interface 类名 : 父类名 <协议名称1, 协议名称2> @end 2>

[email&#160;protected] Apple HomeKit

[email protected]采用基于IEEE802.15.4标准的低功耗个域网协议的ZigBee技术,其是低功耗.低成本及低延迟.标准功率下可满足100米范围内的信号覆盖,并拥有三级安全模式,防止非法获取数据. http://smartgrids.ofweek.com/2013-05/ART-290001-8130-28686110.html 苹果对应的HomeKit 苹果HomeKit如何牵动全国智能硬件格局 http://www.cocoachina.com/newbie/basic/

开源项目中如何同时支持[email&#160;protected]和Github

我的开源项目托管在GitHub,同时在[email protected]也有备份,有两个地方,是不是很麻烦呢?非也非也,下面介绍一下我是怎么做的. 1.先在GitHub新建一个项目,点击GitHub主页右上角的加号 -> New Repository,接着输入Repository name:jsearch,最后点击页面最下面的Create repository按钮,搞定. 2.接着我们在本地检出刚在GitHub新建的项目,我们切换到本地机器的工作目录,然后执行命令: git clone http

[email&#160;protected] &amp; SSH配置

#### [ 导入外部Git仓库到中国源代码托管平台([email protected])] 免费代码托管 您可以通过SSH或者HTTP的方式提交和管理代码,也可以通过Web的方式在线阅读,编辑代码与[email protected]的集成 代码托管与团队协作的一体化服务式管理平台,轻松管理源代码. ------------------------------------------ ## 方案1: 从原始地址clone一份bare仓库 $ git clone --bare  https://g

[email&#160;protected]一个高效的配置管理工具--Ansible configure management--翻译(九)

如无书面授权,请勿转载 第四章 大型项目中Ansible的使用 New features in 1.3 There are two features in Ansible 1.3 that were alluded to previously in the chapter. The first feature is the metadata roles. They allow you to specify that your role depends on other roles. For ex

[email&#160;protected]源代码管理使用日记【转】

转自:https://www.cnblogs.com/Juvy/p/3556902.html git的优势: 1 可以创建分支: 2 版本控制是基于每一次提交的,而不需要考虑每次提交了多少个文件. 下载: 下载网址为:http://git-scm.com/download,根据您的操作系统选择相应的安装宝,下载完后直接按照默认安装即可(本文讲述全部基于Windows操作系统). 概述: git源代码管理器的仓库位置可以基于本地服务器和远程服务器两种方式: 本地服务器主要用于管理自己的代码,将本机

springboot情操陶冶[email&#160;protected]注解解析

承接前文springboot情操陶冶[email protected]注解解析,本文将在前文的基础上对@SpringBootApplication注解作下简单的分析 @SpringBootApplication 该注解是springboot最集中的一个注解,也是应用最广泛的注解.官方也多用此注解以启动spring服务,我们看下其中的源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inher

javaMail的使用以及trying to connect to host &quot;[email&#160;protected]&quot;, port 25, isSSL false异常

最近项目用到邮件系统,开始了解javaMail...话不多说先上代码: pom依赖: <!--    邮件  https://mvnrepository.com/artifact/javax.mail/mail -->        <dependency>            <groupId>javax.mail</groupId>            <artifactId>mail</artifactId>        

中了后缀adobe勒索病毒怎么办 恢复方法百分百解密成功[[email&#160;protected]

深圳的一个公司中了后缀是adobe的勒索病毒,全部文件后缀变成了[[email protected]].adobe公司内中了20几台电脑,中毒后,公司领导特别着急,通过深圳的朋友找到我们,经过我们共同的研究与合作,成功恢复所有被加密文件勒索病毒如何预防 :1.及时给电脑打补丁,修复漏洞.2.对重要的数据文件定期进行非本地备份.3.不要点击来源不明的邮件附件,不从不明网站下载软件.4.尽量关闭不必要的文件共享权限.5.更改账户密码,设置强密码,避免使用统一的密码,因为统一的密码会导致一台被攻破,多

centos7 [email&#160;protected]

用yum进行安装必要程序 如果你Linux用的很熟练的话,我想这些程序你一定已经用yum安装过了,但是如果你还不熟悉Linux,你可以直接用yum进行安装就可以了. yum -y install gcc gcc-c++ autoconf pcre-devel make automake yum -y install wget httpd-tools vim 基于Yum的方式安装Nginx 我们可以先来查看一下yum是否已经存在,命令如下: yum list | grep nginx 查看源支持版