[黑马程序员]Objective-C 面向对象三大特性之多态

什么是多态?

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单地说就是:允许将子类类型的指针赋值给父类类型的指针。

简单示例

#import <Foundation/Foundation.h>

@interface Animal : NSObject
-(void) eat;
@end

@implementation Animal

-(void) eat{
    NSLog(@"Animal eating...");
}

@end

@interface Dog : Animal
@end

@implementation Dog

-(void) eat{
    NSLog(@"Dog eating...");
}

@end

int main(){

    // 使用Dog类指针调用
    Dog *dog = [Dog new];
    [dog eat];

    // 使用Animal类型指针调用
    Animal *animal = [Dog new];
    [animal eat];

    return 0;
}

这两种调用方式都会调用dog类中的eat方法,而不是第二种调用animal类中的eat方法。

多态的好处

考虑一个需求,当我们需要用一个方法来执行喂狗这个动作时(这个例子实际上不太好,但实际需求也许比这更坑爹,所以不妨一起这样假设一下)。

我们就必须

时间: 2025-01-07 21:13:35

[黑马程序员]Objective-C 面向对象三大特性之多态的相关文章

《黑马程序员》 OC的三大特性

OC 的三大特性:封装.继承.多态. 封装:过滤不合理的值 #import <Foundation/Foundation.h> // set 方法 // 作用:提供一个方法给外界设置成员变量,可以在方法对成员变量进行赋值和过滤 // get 方法 // 作用:返回对象内部的成员变量,得到成员变量的值. @interface Student : NSObject { // 成员变量名的命名规范 // 成员变量名肯定以下划线开头 // 好处:可以区分参数名称和成员变量的名称,也可以区分变量名和成员

黑马程序员-OC对象的三大特性

OC语言是面向对象的语言,其三大特性必不可少. 一.封装是一个很重要的概念,它避免外界直接访问或修改对象的属性,可以过滤不合理的值,让外界不必关心内部的细节.通过set方法来让外部设置成员的属性值,通过get方法来获得对象属性值. 1 #import <Foundation/Foundation.h> 2 @interface Student : NSObject</span></span> 3 { 4 int _age; //以下划线开头,避免和局部变量弄混 5 in

面向对象编程(十四)——面向对象三大特性之多态②

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量name. 6 */ 7 private String name; 8 9 /** 10 * 在Animal类自定义的构造方法 11 * @param name 12 */ 13 Animal(String name) { 14 this.name = name; 15 } 16

黑马程序员——Java基础---面向对象(下)

一.概述 面向对象除了封装.继承和多态三大特征之外,还有其他的特性,例如abstract抽象.interface接口等,抽象类主要作为多个类的模板,而接口则定义了多类应该遵守的规范,final关键字让java实现不可变类,让系统更加安全. 二.正文 1.构造器和初始化块 1.1 构造器 构造器是一种特殊方法,这个特殊方法用于创建实例时执行初始化,是创建对象的重要途径,如果程序员没有为JAVA类提供任何构造器,则系统会为这个类提供一个无参数的构造器,这个构造器的执行体为空,不做任何事情.无论如何,

黑马程序员----java基础--JDK新特性和集合其他类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.JDK1.5新特性 JDK升级的三大原因: (1).提高代码的复用性 (2).提高代码的安全性 (3).简化书写 1.泛型机制 JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. (1).泛型概念 泛型是根据数组的思想设计出来的,因为数组一旦建立成功就已经明确了数据类型,所以可根据数组思想给集合指定类型. 如:数组:int[] arr=new int[4]; 而集合的泛

黑马程序员——Java基础---面向对象

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 2015-05-06 一.理解面向对象 面向对象的特点: 1. 是一种符合人们思考习惯的思想 2. 可以将复杂的事情简单化 3.将程序员从执行者转换成了指挥者 完成需求时: a)先要去找具有所需的功能的对象来用. b) 如果该对象不存在,那么创建一个具有所需功能的对象. c) 这样简化开发并提高复用. 在Java的开发过程,其实就是不断的找对象,建立对象,维护对象.设计的过程,

黑马程序员——java高新技术(新特性、反射、泛型)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- java高新技术 第一部分——JDK1.5新特性 1.增强for循环 格式: for(元素类型 变量名 : Collection集合 & 数组 ) { }//增强for循环括号里写两个参数,第一个是声明一个变量,第二个就是需要迭代的容器 高级for循环和传统for循环的区别: 高级for循环在使用时,必须要明确被遍历的目标.这个目标,可以是Collection集合或者数组,如果遍历Collec

黑马程序员--java基础--面向对象

------- android培训.java培训.期待与您交流! ---------- 面向对象的概述: 举例装大象到冰箱.而谈面向对象,就一定要说说面向过程. 面向过程:打开冰箱,装入大象,关上冰箱.这三步就是面向过程的思考方式,这种思想强调的是过程,也可以叫做动作.在C中是这种方式 面向对象:冰箱打开,冰箱存储,冰箱关闭.这就是面向对象的思考方式,这种方式强调是对象,也可以说是实例.在java,C++,C#中使用. 面向对象的特点 1.面向对象的思想符合人们惯有的思考方式. 2.面向对象的出

Java中面向对象三大特性之——多态

多态的概述:  多态是继封装.继承之后,面向对象的第三大特性. 生活中,比如跑的动作,小猫.小狗和大象,跑起来是不一样的.再比如飞的动作,昆虫.鸟类和飞机,飞起来也是不一样的.可见,同一行为,通过不同的事物,可以体现出来的不同的形态.多态,描述的就是这样的状态. 多态的条件 1.继承 2.方法的重写 (为了让多态有意义) 3.父类的引用指向子类的对象 多态的体现 父类类型 变量名 = new 子类对象: 变量名.方法名(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译

黑马程序员————java中面向对象的三大特性

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 面向对象的思想是将一切事物看出由属性,方法,构造器,代码块,内部类等五个方面构成,只要事物在这五个方面有相似之处就可以归为一类,类与类之间则是通过封装,继承,多态来体现. 首先说封装,很简单的思想,上帝创造我们出来没有给我们翅膀,那我们即