OCday04

day04 分类、扩展、协议、单例、代理

 

一、知识点回顾

1.继承

1.OC中继承指的类和类之间的关系。

2.OC中继承指的单继承。语法上不支持多继承。

3.OC中继承都是公有继承(有且仅有公有继承)。

4.OC中得继承为什么都是单继承?

1.借鉴了 高级语言 java和 smalltalk都是单继承

2.为了避免多继承中出现的菱形继承(钻石继承)出现二义性。

        *3.遵守了开放和封闭原则(类的设计)

5.为什么要使用继承?

1.继承可以实现复用。(98%复用)

2.继承是类的一种扩展机制。(子类必须高度相似父类)

6.单继承由那些缺点?

1.语法上只支持单继承,没有多继承。

2.使用单继承 要求父类的设计要非常了解。且子类的内容高度依靠父类。(子类必须和父类高度相似)

3.使用单继承时可以增大子类的空间。

FFFFFFFFFF

FFFFFFFFFF ------------>增大了子类的空间

SSSSSSSSSS

SSSSSSSSSS

7.初始化方法

-(id)init

{

self=[super init];

if(self)

{

//初始化子类部分

}

return self;

}

8.id类型  self类型  super类型

id类型   是一个泛型   表示OC中所有类型的对象。

是一个弱类型,还是一个隐式的指针类型。(不带*)

id类型  返回值  做参数  id类型的数组  id类型的变量

 

self类型   也是一个指针  表示的是指向当前对象的指针。

- 方法中 self表示的就是一个当前的对象。

用法:

1.初始化方法中 self=[super init];

2.self.属性  (set  get)

3.self方法   [self setNo:200];

4.self调用类内的对象方法

-(void)f1

{

[self f2];

}

*5.self在+类 方法中的作用

表示的是当前类的类名  [self  new];

super  表示的是超类、也叫父类、也叫基类

作用:出现在函数中,用来调用父类中的初始化方法

1.初始化方法中常见

*2.试图控制的生命周期

 

多态

1.什么是多态?

相同的函数名在不同的子类中表现出来的功能各不相同。

2.实现多态需要哪些条件?

1.有多态必有继承  多态是建立在继承的基础上。

2.才能拿一个父类的指针指向子类的对象。

3.OC中所有的方法(函数)都是虚函数,虚函数的特点

不看指针  看对象。

3.什么时候用多态?

1.就是一个类有多个子类的时候用多态。

2.使用多态可以少写很多的子类对象的指针。

男人类

女人类

 

动物

狗  Dog *dog

猫  Cat  *cat

老虎

……

4.知道方法的重写(初始化方法)、重载(少)

5.知道runtime(运行时)  多态

id  实现的多态  是指编译器编译阶段不检查类型,在运行时,才需要匹配对象的数据类型。

 

二、单例

demo-4有具体例子  价值好几百

单例是一种常见的设计模式,要求类的对象只能创建一次。一次保持着唯一的一个对象的地址。

这样的类我们就称为单例类。

2.1作用

保存属性生成的私有的成员变量。保存私有变量的,如果你想在类外访问私有的数据 通过单例来访问。

第二个 做音乐播放器 使用或系统中默写功能都是单例。

2.2分类

1.MRC  手动引用计数中非完全单例

static 但单例类 *指针=nil;

+(单例类 *)shareInstace

{

if(!指针)

{

指针=[[单例类 alloc]init];

}

return self;

}

2.完全单例

需要重写NSObject类中所有关于内存管理的函数,释放  拷贝(深  浅)等函数。

3.ARC自动引用计数  线程安全的  单例类

通过GCD 和  单例类实现一个可以在多线程中使用的基于ARC的单例。

3.分类、类别、类目

分类是OC中一种特殊的语法,是类的一种动态的扩展机制。

提供的功能是在不知道类的源代码的情况下,对类可以进行扩展的一种机制。

1.分类又分两种

2.有名分类(有名类别)

所谓有名类别就是指给类的分类起一个名称

只能扩展类的方法,不能扩展类的成员。

扩展方法:

可以扩展一个  + 方法

可以扩展一个  -  方法

语法格式:

分类的声明部分:

Student +分类的名称.h

@interface Student(分类的名称)

//只能声明方法

+(Student *)createStudent;

-(void)showStudentAllInformation;

@end

分类的实现部分:

Student +分类的名称.m

@implementation Student(分类的名称)

+(Student *)createStudent

{

 

 

}

-(void)showStudentAllInformation

{

 

 

}

demo-5

2.匿名分类(匿名类别)类的扩展

匿名分类(类别)也叫类的扩展,用途比较广,开发中经常用到,现在你Xcode创建一个新的UI工程,自带一个匿名分

类,我们一般轻快下都称为是类扩展。

一般我们要扩展的.m文件中,通常用来扩展私有的属性或成员或函数(方法)

匿名分类(类别 类扩展)的作用

不但能够扩展成员变量  还能扩展方法和属性

匿名分类语法:

@interface 类名()

{

NSUInteger _age;

}

@end

      @interface Student : NSObject

      {

         NSUInteger _age;

      }

      -(void)setAge:(NSUInteger)age;

      -(NSUInteger)age;

 @end

2.为什么要使用分类?

1.因为OC中的继承都是单继承,只有一个父类,不能多继承,一旦这个父类被占用,就没有其他的父类的名额。

2.可以使用分类,分类扩展类比较灵活。可以不借助继承关系就可以直接对类进行扩展。

3.分类可以起到分散接口(方法)的作用。

4.早起的OC版本中  OC中没有协议的概念,可以通过NSOBject这类的一个分类 使实现 非正式协议。

来实现OC中涉及迷失中的非正式协议的委托(代理)。实际有三种

 

3.面试题

1.OC中有没有私有的成员变量?

2.OC中有没有私有的方法?如果有 怎么实现?

3.类扩展和分类有什么区别?

4.私有的方法如何调用?

[self  类内]

5.私有的成员变量在类外如何访问?

单例

 

4.协议  @protocol

4.1什么是协议?

协议也叫正式协议。所谓正式协议是一种OC中特有的语法,通过@protocol声明协议,协议是一个公有的方法列表。

只有声明部分,没有实现部分。

4.2协议中的方法列表

1.可选的方法

 

2.必选飞方法

4.3为什么要使用协议

使用协议的好处

1.可以起到分散接口的作用,把协议中的方法分散到实现协议的类中去。

2.通过协议实现(接口的)多继承

3.使用协议实现协议委托 ——委托的设计模式

4.使用协议可以实现委托传值

5.使用协议能够让一个类更加具有通用性。

4.4怎么使用协议

1.使用正式协议

第一步:制定协议

协议名称的命名规范:协议的名称必须是    类名+协议名   或   类名+Delegate

@protocol   协议名称

//声明在协议中的方法。

@end

 

第二步:采纳协议   也叫遵守协议

@interface 类名:父类名  <协议的名称>

第三步:遵守协议的目的 是为了实现协议中的方法

1.凡是必须要实现的就必须得在遵守该协议的类中实现

2.凡是可选的方法 可以根据自己的实际情况选择性的来实现。

 

5.委托(代理)   [有协议必有委托]

设计模式中的一种,委托是两个对象之间的关系。两个对象之间通讯的一种方式。

当一个对象 想做一件事却没有能力做,另一个对象恰好能做这件事,那么我们就可以委托另外一个由能力去做这件事的对象去做。

例子:挂失银行卡   中介找房   玩lol送女友

 

1.委托类——委托人的属性 id<遵守协议>delegate(代理人)

|

协议————>约束了 委托的事件

1.帮我打LOL  WOW,赢了请你吃饭

2.队友特别给力再来一局

                                  ^

                                    |

                                  |  实现方法

   2.被委托类(代理类  受托类) <遵守协议> ———>             demo-9  

 

 

作业:

1.熟练掌握  协议委托 (LOL 妈妈保姆的例子0必会)

2.掌握 类的扩展 和 分类  掌握私有方法调用  私有成员保存

3.掌握 协议

 

编程题:

1. 你委托 你的女朋友 给你买一瓶可乐。因为你正在看NBA。

2.你委托 你的老爸  去ICBC银行挂失你得银行卡。因为你在上

    学。

3.你委托 链家地产  给你租房  1.三居室  2.能洗澡  3.能做饭  4.有

    宽带  5.必须是女性邻居

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值