多态基本概念

1.什么是多态?

  • 什么是多态:多态就是某一类事物的多种形态

    • 猫: 猫-->动物
    • 狗: 狗-->动物
    • 男人 : 男人 -->人 -->高级动物
    • 女人 : 女人 -->人 -->高级动物
  • 程序中的多态:父类指针指向子类对象

2.多态的条件

  • 有继承关系
  • 子类重写父类方法
  • 父类指针指向子类对象
    狗 *g = [狗 new];
    动物 *a = [狗 new];
    猫 *c = [猫 new];
    动物 *a = [猫 new];
    
  • 表现:当父类指针指向不同的对象的时候,通过父类指针调用被重写的方法的时候,会执行该指针所指向的那个对象的方法

3.多态的优点

  • 多态的主要好处就是简化了编程接口。它允许在类和类之间重用一些习惯性的命名,而不用为每一个新的方法命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分开来。
  • 多态也使得代码可以分散在不同的对象中而不用试图在一个方法中考虑到所有可能的对象。 这样使得您的代码扩展性和复用性更好一些。当一个新的情景出现时,您无须对现有的代码进行改动,而只需要增加一个新的类和新的同名方法。
时间: 2024-11-03 21:39:51

多态基本概念的相关文章

黑马程序员-----多态的概念和条件

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲  多态的介绍 本小节知识点: 1.[了解]什么是多态? 2.[掌握]多态的条件 3.[了解]多态的优点 提出一个问题: 大家来根据现在学习的知识,思考一个问题:父类能否访问子类方法? 1.什么是多态? 什么是多态:多态就是某一类事物的

第49课 多态的概念和意义

1. 函数重写回顾 (1)父类中被重写的函数依然会继承给子类 (2)子类中重写的函数将覆盖父类中的函数 (3)通过作用域分辨符(::)可以访问到父类中的函数 Child c; Parent* p = &c; c.Parent::print(); //从父类中继承 c.print(); //在子类中重写 p->print(); //父类中定义 2. 面向对象中期望的行为 (1)根据实际的对象类型判断如何调用重写函数 (2)父类指针(引用) ①指向父类对象时,则调用父类中定义的函数 ②指向子类对

多态的概念和作用(深入理解)

多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态.编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话.对不同类的对象发出相同的消息将会有不同的行为.比如,你的老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说:“开始工作”即可,而不需要对销售人员说:“开始销售工作”,对技术人员说:“开始技术工作”, 因为“员工”是一个抽象的事物, 只要是员工就可

C++学习22 多态的概念及前提条件

在<C++基类和派生类的赋值>一节中讲到,基类的指针也可以指向派生类对象.请看下面的例子: #include <iostream> using namespace std; class People{ protected: char *name; public: People(char *name):name(name){} void display(){ cout<<"People: "<<name<<endl;} }; c

多态的概念和用法

1.多态的条件: 有继承关系,有方法重写 父类的声明变量指向子类对象 2.多态的优点: 简化变成接口,允许类与类之间重用习惯性的明明 可以分散在不同的对象中,不用试图在一个函数中考虑所有的对象 3.多态的原理: 动态绑定: 动态类型能使程序直到执行时才确定对象所属类型 动态类型绑定能使程序执行时才确定要对对象调用的实际方法 OC不同于传统程序设计语言,它可以在运行时加入新的数据类型和心的程序模块:动态类型识别.动态绑定.动态加载 id类型:通过指针类型,弱类型,编译时不进行类型检查 4.多态的注

C++多态的概念

在人类最初的时候,大家都是用手吃饭的,但是随着人类的漫长发展,渐渐的开始出现等级制度,部落,再之后,就是国家.每个国家的人吃饭的方式都不一样,英国人用刀叉吃饭,中国人用筷子吃饭.所以,如果想用程序来表现就是,现有一个基类(父类), class Human { public: void eating( void ) { cout << "use hand to eat" << endl; } }; 接着,在父类的基础上,诞生了派生类,英国人,中国人, class 

重写、覆盖、重载、多态几个概念的区别分析

[仔细阅读,很不错] override->重写(=覆盖).overload->重载.polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能.一般是用于子类在继承父类时,重写(重新实现)父类中的方法.重写(覆盖)的规则:   1.重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.   2.重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private

构造 多态 this 小结

构造方法 1.private 修饰的构造函数不被子类继承.2.定义类时,若没有显示定义构造器,则存在默认的无参构造器:若已定义,则不再有默认的无参构造器,除非显示的定义了无参构造器.3.子类构造器的第一条语句若没有显示调用父类的构造器,则默认都是调用了父类的无参构造器:若父类没有无参构造器(或为私有),则必须用 super(参数)显示调用父类的有参构造器.4.生成子类对象时,首先会调用父类的构造函数(原因请看上一条),且父类的构造函数中引用的函数遵循多态的原则(即:父类构造函数中调用的非静态方法

java面向对象编程--第九章 多态和抽象

9.1多态 在生物学中,是指一个生物或物种可以有多种不同的形式或阶段: 在OOP中,多态是指一个对象有多种形式的能力. 多态可以说是面向对象编程的精髓所在.java中之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同.单继承保证了继承关系的简单明了,但势必在功能上有很大的限制. 由于子类对象中包含一个完整的父类对象,所以父类变量中定义的方法和属性在子类对象中都能找到,所以允许一个父类变量引用子类对象,但反过来却不行,因为子类的方法和属性可能多于父类. 多态调用时,用父类变量指向子类对