博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
objective-C学习笔记(六)继承与多态
阅读量:5057 次
发布时间:2019-06-12

本文共 988 字,大约阅读时间需要 3 分钟。

封装 encapsulation

    隐藏对象内部实现细节,对外仅提供公共接口访问。

    (说白了就是属性啊,方法啊全都写在类内,对外只提供访问,不需要了解细节)

继承 inheritance

    一个类型在另外类型基础上进行的扩展实现。

多态 polymorphism

    不同类型针对同一行为接口的不同实现方式。

OBJC的继承

【单继承】每一个类只能有一个基类,子类自动继承基类的:

     ·实例变量

     ·属性 

     ·实例方法

     ·类方法

     了解所有类的根类:NSObject

  继承的两层含义:

     成员复用: 子类复用基类成员

     类型抽象: 将子类当作父类来使用(IS-A关系准则)

  在子类的对象内存中,可以找到一个完全的父类对象内存。

  继承中的init和dealloc

      子类自动继承基类的初始化器

      子类也可以重写基类初始化器,此时子类初始化器必须首先调用基类的一个初始化器(手工调用 self = [super init];)。

      子类可以选择继承基类析构器,或者重写基类析构器。

      子类析构器执行完毕以后,会自动调用基类析构器(后置调用,且不支持手工调用 [super dealloc]会报错,除非关闭ARC)。

      子类析构器自动具有多态性。  

   Tips:尽量避免在父类init和dealloc中调用子类重写的方法。因为子类在初始化的时候,会自动前置调用父类的初始化器,而父类的初始化器里面调用子类重写方法的话,子类都还没有初始化完毕,这个方法就会报错。析构器也是一样,因为子类重写的析构器,会在最后调用父类的基析构器(后置调用),这时候父类析构器里还有调用子类的方法的话,那些内存早就已经被释放掉了,直接回报错。

 多态 运行时多态 Polymorphism

   子类在父类统一行为接口下,表现不同的实现方式。

   重写与重载

       重写:(与父类同名同参数方法)子类可以重写父类的方法。

       重载:(与父类同名不同参数方法)OBJC不支持方法重载,

               外部参数不同就直接是另一个方法;外部参数相同而内部参数不同(参数名或者类型)会直接报错。

   继承自父类的方法,需要重写的话,直接在实现类上重写就可以了,不需要重新在接口类中声明。

   self和super

   self具有多态性,可以指向不同子类

   super没有多态性,仅指向当前父类

    

转载于:https://www.cnblogs.com/dom075/p/5315280.html

你可能感兴趣的文章
WPF点滴(2) 创建单实例应用程序
查看>>
LeetCode 342. Power of Four
查看>>
「PKUWC2018」随机游走
查看>>
resteasy json
查看>>
个人理解的javascript作用域链与闭包
查看>>
ASP.NET ASHX 一般处理程序教程
查看>>
angular6 跨域问题
查看>>
Linux中JDK环境配置
查看>>
maven安装、配置及创建工程
查看>>
原生js简单实现定时抢月饼
查看>>
尝试向树莓派3B引入Drbian 9 arm64-PART 1
查看>>
Redis相关
查看>>
kvm 实际使用(转)
查看>>
CSP201612-1:中间数
查看>>
Android手机令牌,WEB安全之硬件绑定变向思路
查看>>
C++类的公用继承输入日志标题
查看>>
Loadrunner上传与下载文件脚本
查看>>
(水题)洛谷 - P2089 - 烤鸡
查看>>
Codeforces - 773A - Success Rate - 二分 - 简单数论
查看>>
select into from与insert into select区别
查看>>