论“继承与多态”的重要性

面向对象语言三大特征:封装、继承、多态。

封装:一个类留给外部接口总是小于内部实现的方法。

继承:自雷可以继承父类的字段、属性、方法。

多态:面对同一消息,不同类的对象做出不同的响应。

一、认识继承

(1)生活角度

父类:动物    英雄        人

子类:狗      抗日英雄    中国人

父类          超类        基类

子类          子类        派生类

【继承】也称派生。继承指的是子类继承父类的字段、属性、方法。派生是指子类在父类基础上可以添加自己特有的字段、属性、方法。【继承】与【派生】是对同一种行为,不同侧重点的描述。

【注】

(a)子类可以从父类继承到父类所有的字段、属性、方法。父类在interface中声明字段、属性、方法,子类全部可以使用。父类在impletation中声明的字段、属性、方法,子类同样可以继承,但是无法使用。

(b)子类可以在父类的基础上添加自己特有的字段、属性、方法。

【注】

1.oc中 所有的方法都是虚函数,都可以被子类重写

2.重写之后,子类对象调用的是子类中重写之后的方法。

3.很多时候,我们并不需要将父类某些方法完全重写,而在父类基础开枝散叶。这个时候我们借用super关键字去调用的方法。

self与super

【问】为什么我们不可以将对象开辟在栈中,只能创建在堆上?

因为oc是动态机制,所谓的动态机制,是指在程序编程阶段是无法确定一个类的父类的,自然就不可以确定他的大小,没办法确定大小就没有办法再栈开辟空间,所以只能在运行阶段,动态的去对上为对象开辟空间。

二、继承的作用

1.创建大量相似的类(oc中几乎不用)

【例】在游戏开发中,我们会创建一个怪物,僵尸,幽灵,怪物的行为:游荡、攻击、被攻击、死亡。

2、继承一个官方 的类或者继承一个第三方的类。

【注】NSString\NSArray\NSDictionsry 不可以被继承。

3、使用继承去实现多态。

【多态】是不同对象面对同一个消息做出不同的反应。

一、认识多态

(1)从生活角度

面对上课铃响,上体育课和文化课的学生面对‘铃响‘做出不同的举动。

(2)从代码角度

父类指针指向子类对象,通过父类指针调用方法时,父类指针指的对象不同,面对同一消息的响应结果不同。

【注】以上多态,主要是C++实现多台的手段,在OC阶段实现多态是通过协议。

【继承】+【重写】+【父类指针实现多态】

【类别】category

当我们在使用一个类的时候,我们经常会感叹:如果这个类再有一个什么方法多好啊,通常不方便直接修改该类。

【注】

1、在类别中只能添加成员方法。类方法,但是不可以添加成员变量、属性。

2、在类别中添加方法就如同添加到了原类中。

3、在类别定义成员方法也可以是原类的成员变量。

4、父类的类别添加的成员方法、类方法,子类也可以使用。

5、要想使用类别中添加的方法,需要导入类别的头文件(原类+类别名)。

时间: 2024-08-25 14:28:03

论“继承与多态”的重要性的相关文章

第三课 Delphi中的封装,继承,多态的应该实例运用

   上一讲我们提到什么是封装,继承.和多态,现在我们讲解delphi中是如何实现它们的?以及为什么我们需要封装,继承和多态. 1.首先来说封装,delphi中用关键字private修饰符来说明,即表示类的成员为私有的,在类的外部是不可见了,只有在本类中可以随便使用.它的访问权限最低. 2.delphi中还有一个比较特殊的修饰符protected,表示该类的成员为保护型.受保护的成员只能由该类的和派生类可以访问.如果想要子类继承父类的某些功能的时候,可以使用某些成员为protected类型,访问

Java的三大特性:封装、继承、多态

一.类的概念: 类一般包括两个部分:属性(成员变量)和方法(成员方法)方法组成部分:修饰符(可选) 返回值类型(必须) 方法名(必须)参数列表(可选) package com.classTest.project; public class ClassTest { //成员变量 String name; int age; //成员方法 public void count(){ this.age+=1; } } 二.定义方法的几点说明 1.返回值类型:基本数据类型(整型(int).浮点型(float

2、C#面向对象:封装、继承、多态、String、集合、文件(上)

面向对象封装 一.面向对象概念 面向过程:面向的是完成一件事情的过程,强调的是完成这件事情的动作. 面向对象:找个对象帮你完成这件事情. 二.面向对象封装 把方法进行封装,隐藏实现细节,外部直接调用. 打包,便于管理,为了解决大型项目的维护与管理. 三.什么是类? 将相同的属性和相同方法的对象进行封装,抽象出 “类”,用来确定对象具有的属性和方法. 类.对象关系:人是类,张三是人类的对象. 类是抽象的,对象是具体的.对象可以叫做类的实例,类是不站内存的,对象才占内存. 字段是类的状态,方法是类执

Java的继承与多态

Java的继承与多态对于提高开发效率,减少开发量,是非常有帮助的,也便于代码维护.下面是根据书上讲的,我又做了改进的例子. 假设需求: 公司需要对所有人员进行管理,所有人员分为普通员工和经理人,他们的头衔.工资.生日等信息都是不一样的,但是不能开发两套系统分别进行管理,而是要一套系统完成对所有人的管理. 设计一个员工类,这是父类,定义如下: package com.myHelloWorld; import java.text.ParseException; import java.text.Si

Java 继承、多态与类的复用

摘要: 本文结合Java的类的复用对面向对象两大特征继承和多态进行了全面的介绍. 首先,我们介绍了继承的实质和意义,并探讨了继承,组合和代理在类的复用方面的异同.紧接着,我们依据继承引入了多态.介绍了它的实现机制和详细应用.此外,为了更好地理解继承和多态.我们对final关键字进行了全面的介绍. 在此基础上.我们介绍了Java中类的载入及初始化顺序.最后.我们对面向对象设计中三个十分重要的概念–重载.覆盖与隐藏进行了详细的说明. 要点: 继承 组合,继承,代理 多态 final 关键字 类载入及

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

Objective-C的封装、继承与多态

面向对象有三大特征:封装.继承和多态. 一.封装 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问.简而言之,信息隐藏,隐藏对象的实现细节,不让用户看到,以此来增强安全性和简化编程,进而达到封装的目的. 使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员. 访问修饰符:private.protect.public private:私有的,不可供外部访问的信息,只有类本身能存取. prot

【转】C#三大特性之 封装、继承、多态

C#三大特性之 封装.继承.多态 一.封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型.  封装的意义: 封装的意义在于保护或者防止代码(数据)被我们无意中破坏.在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改. 封装提供了一个有效的途径来保护数据不被意外的破坏.相比我们将数据(用域来实现)在程序中定义为公用的(public)我们将它们(fie

Objective--C三大特性:封装,继承,多态(杂乱的东西)

OC中类的特性共有有三个,它们分别是封装.多态和继承. 1.成员变量的作用域.成员变量的作用域应该也是封装的一种,它对成员变量的作用范围做出了一些限制. @public : 在任何地方都可以直接访问成员变量. @protected:在本类和子类中可以直接访问. @private:只能在本类中访问. @package:在同一个框架内可以访问. 默认情况下在类的声明中定义的成员变量的修饰符是@protected,在类的实现中定义的成员变量的修饰符是@private. 总结:(1)封装是为了保护类中的