1、什么是继承?OC中的继承有哪些特点?

  “继承”是面向对象软件技术当中的一个概念。如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。继承可以使得子类具有父类的各种属性和方法(Object-C子类会继承父类中除了@private实例变量之外的全部内容),而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。另外,为子类追加新的属性和方法也是常见的做法。

  继承特点:①   OC中继承是单向的,不能相互继承;

         ②   继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为;

       ③ 没有⽗父类的类称为根类,OC中的根类是NSObject(祖宗);

       ④ 如果⼦子类不满意父类方法的实现,可以重写父类的方法。

2、子类与父类的关系?

  继承的上层: 父类 ,继承的下层:子类;

  面向对象提供了的继承语法,能够大大简化代码,把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可;

  继承既能保证类的完整,又能简化代码,让类与类之间的关系更加紧密。

3、 如果父类中的某个方法满足不了子类的需求,怎么办?

  可以重写父类的方法,Objective-C中重写父类的不需要声明;

  示例:- (void)eat{    NSLog(@"%@在吃草",_name); }

  eat方法是由子类继承自父类Person中的,如果子类需要修改父类中的实现,则只需在类的实现部分重新定义该方法即可。

4、self与super分别指的是什么?

  Self:谁调用它,谁就是self,就是说self就是它本身(详细一点就是:self是一个指针,指向对象的isa指针,isa指针指向类对象(结构体,任何对象本质都是结构体),然后通过类对象的SEL指针(指向code区的类)去类中寻找方法,找到就实现。)同时也可以理解为:self 如果是对象调用到 ,那self就是该对象,如果是类调用到,那self就是该类。

  Super:就是指向父类的,是编译器指令,并非对象。

  作用:给super发消息,可以执行父类中实现的方法;当子类重写父类方法时,通过super执行父类的实现,又拥有自己的实现,相当于对父类已经定义的方法做扩展;子类可以重写父类的方法,即子类既有自己的实现,又有父类继承下来的实现,如果想使用父类的实现,向super发送消息。

5、OC中完整的初始化方法的格式怎么写?其里面包含几部分内容?

  ①创建对象分两步:开辟空间、初始化;

  ②初始化方法的主要作用是:为某些实例变量赋初值

  ③初始化方法在对象的整个生命周期里只使用一次

  ④完整的初始化方法:

  

6、什么是便利构造器?它有什么好处?它封装的是什么?有什么作用?

  ①便利构造器在初始化方法的基础上前进了一小步;封装了对象创建过程;

  ②简化代码,方便外界使用;

  ③封装了alloc和初始化方法,使用起来更加简洁;

  ④快速创建对象。

7、便利构造器的书写格式是什么?有哪些需要我们注意的地方?

  示例:

  .h文件中

  

  .m文件中:

  

main.m文件中:

  

  控制台输出:

  

Email:dingding3w@126.com

Objective-C 快速入门--基础(二)的更多相关文章

  1. Objective C 快速入门学习二

    Objective-C 类.对象.方法 1.编写一个复数类: #import <Foundation/Foundation.h>@interface Complex: NSObject / ...

  2. Vue.js+vue-element搭建属于自己的后台管理模板:Vue.js快速入门(二)

    Vue.js+vue-element搭建属于自己的后台管理模板:Vue.js快速入门(二) 前言 上篇文章对Vue.js有了初步理解,接下来我们把Vue.js基础语法快速的过一遍,先混个脸熟留个印象就 ...

  3. JS快速入门(二)

    目录 JS快速入门(二) 结构图 BOM window对象 open() window子对象 location对象 history对象(了解) navigator 对象 screen对象 BOM 定时 ...

  4. Scala快速入门 - 基础语法篇

    本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...

  5. MySQL快速入门(二)

    目录 MySQL快速入门(二) 约束条件 自增 自增的特性 主键 外键 级联更新/删除 表与表之间的关系 外键约束 操作表方法 查询关键字 练习数据 select··from where 筛选 gro ...

  6. html5快速入门(二)—— CSS简介

    前言: 1.HTML5的发展非常迅速,可以说已经是前端开发人员的标配,在电商类型的APP中更是运用广泛,这个系列的文章是本人自己整理,尽量将开发中不常用到的剔除,将经常使用的拿出来,使需要的朋友能够真 ...

  7. Docker快速入门(二)

    上篇文章<Docker快速入门(一)>介绍了docker的基本概念和image的相关操作,本篇将进一步介绍image,容器和Dockerfile. 1 image文件 (1)Docker ...

  8. spring快速入门(二)

    一.在spring快速入门(一)的基础上,我们来了解spring是如何解决对象的创建以及对象之间的依赖关系的问题 (比如client中依赖UserAction的具体实现,UserActionImpl中 ...

  9. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

随机推荐

  1. 【Java基础】类和接口

    Num1:使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.设计良好的模块会隐藏所有的实现细节,把它 ...

  2. JAVA 设计模式 迭代器模式

    用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构

  3. Elasticsearch安装

    在启动或者安装ES之前,需要先下载JDK 1.7以上的版本,对于2.0来说,要求JDK1.8以上. 检查JDK的版本 使用命令: java -version echo $JAVA_HOME 查看JDK ...

  4. 从.net转型,聊聊最近一些面试,薪资和想法

    上一个星期,一篇名为<.net估计要写在你手里了>几乎点燃了整个园子,有人群情激愤了,有人点赞的,有人上去打算喷博主个体无完肤的,总之,这篇博客很成功的引起一些.net 从业者的思考,也包 ...

  5. 一个比较有意思的C语言问题

    先看代码吧,学习c语言结构体中看到的一个问题 #include<stdio.h> int main(){ struct{ int a:2; }x; x.a=; x.a=x.a+; prin ...

  6. Oracle导入导出命令

    //导出 exp techrpt_data/techrpt_data@orcl file=d:\_临时文件\techrpt_data.dmp owner=techrpt_data //导入 imp t ...

  7. 【C#】添加引用方式抛出和捕获干净的WebService异常

    说明:[干净]指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”. 前提:你对WS有编写权.就是说如果你调的是别人 ...

  8. Github的第三方验证

    Github的第三方验证 随着近年来网络安全越来越受到重视,对于用户认证和用户信息保存模块的开发也提升到了一个新的高度. 一般小型网站开发的时候,由于技术水平和时间成本有限,很有可能会开发出一些或大或 ...

  9. 通过泛型数据,操作SQL数据库

    本人在操作数据库的时候,采用将对象的形式操作传入数据库,经过大量百度和朋友帮助,总结出如下两个接口.用于插入数据,提取数据. 要这样操作的前提条件,就是类名和表名一致,类字段和表字段一致就可以了 // ...

  10. 点击显示div

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...