Objective C 快速入门学习五
<一>继承和多态
@class Complex 声明类(同C++)
子类函数成员 super 访问父类 同C++类似
.通过继承 在子类中添加新方法
.通过继承 在子类中添加新成员
.通过继承 实现多态(实现比较简单,通过Id通用类型作为父类)
.重载
.抽象类abstract作用:创建子类更容易;提供了处理所有派生子类的公共接口;抽象方法制定了标准协议,规范子类必须实现。
.通用类型id,编译时不会做类型检查,在运行时才会动态绑定具体类型,指出错误。
静态类型在编译阶段就会指出错我,另外,可以提高程序的可读性。 .处理动态类型若干方法
mySquare是Square类的实例。
[Square class] //从Square类获得类对象
[mySquare class] //从mySquare对象获得其所属类
[obj1 class] == [obj2 class] //判定两个对象是否属于同一个类
[mySquare is MemberOf: [Square class]] //判定mySquare是不是Square的实例
@selector (alloc) //为alloc方法生成1个SEL类型的值
[Square respondsTo @selcetor (alloc)] == YES //判断Square类是否响应alloc类方法
[Square instanceRespondToSelector: @selector(action)] //查看Square的实例是否响应action方法
eg:
if([Square instanceRespondToSelector: @selector(action)] == YES)
[mySquare performSelector: @selector (action)] //应用action方法 [Square isSubclassOfClass: [Rectangle class]] == YES //判断Square是否为Rectangle子类 <二>@try异常处理
-(void)action
{
...
if(数组越界)
NSException *e = [NSException exceptionWithName:@"out of array" reason:@"address is invalid" userInfo: nil]
@throw e;//抛出异常
} @try
{
[mySquare action];//尝试执行mySquare action方法
} @catch(NSException *exception)
{ //捕捉异常,也可以派生NSException子类,重新定义具体细节
NSLog(@"Caught %@%@", [exception name], [exception reason]);//产生异常的名称和原因
}
@finally
{//无论异常是否发生,都必须执行
<代码块>
} <三>协议和分类
分类可以扩展类的方法,无需创建子类,无需访问类的源代码,但是它会影响到子类。
@interface Square (MathOps)
-(void) print;//增加新方法,与协议默认不同,不强制实现
@end 协议是多个类共享的一个方法列表,与抽象类的抽象方法类似,子类必须都要实现该方法。 @protocal <NSCoding>//NSCoding协议
-(void)copyWithZone;//默认是必须实现
@optional //表示可选项,不强制该协议的使用者实现该函数print
-(void) print;
@required //表示必须实现cout
-(void) cout;
@ @protocal <NSCopying>//NSCopying协议
-(void)copy;
@end @interface AddressBook: NSObject<NSCopying, NSCoding>//可以采用多个协议
@interface Square (MathOps)<NSCopying, NSCoding>//分类也可以采用协议
Objective C 快速入门学习五的更多相关文章
- Objective C 快速入门学习一
Objective-C程序设计 1. 直接用Xcode作为IDE,舍弃gcc编译方面的学习.2. 入门例子:Eg:打印Hello World 控制台程序 #import<Foundation/F ...
- Objective C 快速入门学习四
类 1.合成存取器方法 @property 成员变量 @synthesize 成员变量 可以让编译器自动合成 设置和获取函数的方法,不用手动生成set成员变量,Get成员变量 @interface ...
- Objective C 快速入门学习三
1.数据类型 和C语言基本一样. 有一个特别数据类型id,可以储存任何类型的对象,它是实现多态和动态绑定的基础. Objective-C 2.程序结构 Objective-C和C的程序结构一模一样,具 ...
- Objective C 快速入门学习二
Objective-C 类.对象.方法 1.编写一个复数类: #import <Foundation/Foundation.h>@interface Complex: NSObject / ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- Sass简单、快速上手_Sass快速入门学习笔记总结
Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...
- SCARA——OpenGL入门学习五六(三维变换、动画)
OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...
- ASP.NET Core快速入门--学习笔记系列文章索引目录
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...
- ELK快速入门(五)配置nginx代理kibana
ELK快速入门五-配置nginx代理kibana 由于kibana界面默认没有安全认证界面,为了保证安全,通过nginx进行代理并设置访问认证. 配置kibana [root@linux-elk1 ~ ...
随机推荐
- C++ Scripting
http://www.quepublishing.com/articles/article.aspx?p=26069
- 屌丝逆袭--Asp.net快速入门学习教程 第1晚
本人屌丝一名,因工作原因,不能白天学习编程,所以只能做夜猫子学习编程,期待一天能逆袭成一名高帅富的技术大牛(靠,都想到流口水了........囧). 本教程记录本屌丝学习Asp.net的过程,大牛就飞 ...
- Jexus-5.6.3使用详解
一.Jexus Web Server配置 在 jexus 的工作文件夹中(一般是"/usr/jexus")有一个基本的配置文件,文件名是"jws.conf".j ...
- Pycharm 使用
Pycharm基本使用http://edu.51cto.com/index.php?do=lession&id=118722 Pycharm的基本使用 在Pycharm下为你的Python ...
- [C#]通用守护进程服务
摘要 很多情况下,都会使用windows服务做一些任务,但总会有一些异常,导致服务停止.这个时候,开发人员又不能立马解决问题,所以做一个守护者服务还是很有必要的.当检测到服务停止了,重启一下服务,等开 ...
- 怎样让Oracle支持中文? 语言_地域.字符集
暂时不涉及数据库业务,但是今天入库的时候中文入库报错,考虑可能是字体不支持,留待备用. 来源:Linux社区 作者:robertkun 语言_地域.字符集SIMPLIFIED CHINESE_CHI ...
- 《Effective C++》第三版笔记
阅读此笔记前,请先阅读 <Effective C++>第二版笔记 和 <More Effective C++>笔记 这里只记录与上面笔记不同的条款,主要是 "面对 ...
- Myeclipse中的web项目审查(jquery-2.1.1.min.js)出现错误
前言,本来在把web项目搞得好看一些,从网上下载了一个很炫酷的模板导入web中,无奈出现了错误,如下:
- 阿里云Nginx绑定多个域名的方法
nginx绑定多个域名,可通过把多个域名规则写一个配置文件里实现,也可通过分别建立多个域名配置文件实现,一般为了管理方便,建议每个域名建一个文件,有些同类域名也可写在一个总的配置文件里. 一.每个域名 ...
- ngCordova插件安装使用
为什么ngCordova ngCordova是在Cordova Api基础上封装的一系列开源的AngularJs服务和扩展,让开发者可以方便的在HybridApp开发中调用设备能力,即可以在Angul ...