`
yangyou230
  • 浏览: 1649301 次
文章分类
社区版块
存档分类

覆盖、多态、重载

 
阅读更多

覆盖、多态、重载这几个概念非常的类似。下面解释一下它们的区别:


覆盖:

在基类中定义了一个非虚拟函数,然后在派生类中又定义了一个同名同参数同返回类型的函数,这就是覆盖了。在派生类对象上直接调用这个函数名,只会调用派生类中的那个。


重载:

在基类中定义了一个非虚拟函数,然后在派生类中定义一个同名,但是具有不同的参数表的函数,这就是重载。在派生类对象上调用这几个函数时,用不同的参数会调用到不同的函数,有可能会直接调用到基类中的那个。


多态:

在基类中定义了一个虚拟函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。多态是这3种情况中唯一采用动态绑定技术的一种情况。也就是说,通过一个基类指针来操作对象,如果对象是基类对象,就会调用基类中的那个函数,如果对象实际是派生类对象,就会调用派声雷中的那个函数,调用哪个函数并不由函数的参数表决定,而是由函数的实际类型决定。

下面直接用代码说明它们之间的不同。


完全直接覆盖



完全覆盖父类定义子类的对象,父类优先





多态:只要有virtual和override,不管使用父类还是子类实例化一个子类对象都调用子类方法,就是子类对父类覆盖







子类对父类方法重载:若使用子类中新定义的重载函数,只能用子类实例化一个对象调用










分享到:
评论

相关推荐

    重载,重写,覆盖,多态

    重载,重写,覆盖,多态的深刻剖析,具体分析了重载,重写,覆盖,多态之间的区别

    java 多态重载 PPT

    这个PPT详细展示了java的多态重载和重写,展示了重载和覆盖的不同点及区别办法

    Java语言中的 覆盖重载和多态

    Java语言中的覆盖重载和多态,方法的多态,类型的多态,多态的优点,覆盖(override)识别标志,方法的重载,构造函数的重载,重载的好处,重载与覆盖的比较,编译时多态和运行时多态

    重载、覆盖、多态与函数隐藏

    要弄清楚重载、覆盖、多态与函数隐藏之间的复杂且微妙关系。这是C++基本功,几个概念容易混淆,易于掌握,要多运用。

    C#重写重载与多态

    重载:用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。多态:c#的多态性主要体现在类的继承上:子类继承父类的时候,可能出现同名但方法定义不同的情况, 所以在子类中会将原方法...

    C++中的多态、重载、覆盖与隐藏

    上网看C++的一些资料,突然看到虚函数,突然让我回想起继承,覆盖什么的,决定总结一些资料,加上自己的体会写一篇。  1、C++中的虚函数(virtual function)  虚函数是C++中用于实现多态(polymorphism)的...

    C#中多态、重载、重写区别分析

    本文实例总结了C#中多态、重载与重写的概念与区别。对于初学C#的朋友来说有不错的参考价值。分享给大家供大家参考。具体分析如下: 重写:是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中...

    PHP面向对象编程之深入理解方法重载与方法覆盖(多态)

    主要介绍了PHP面向对象编程之深入理解方法重载与方法覆盖(多态)的相关资料,需要的朋友可以参考下

    Java源码小合集:继承和多态相关的例子.rar

    继承和多态的相关Java源码下载,比较散,像覆盖和重载、对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏、调用父类的方法...

    JAVA 面向对象程序设计第3章 继承与多态.pptx

    3.3.3 重写覆盖问题;3.3.4 学生实践练习;3.3.4 学生实践练习;3.4 多态;3.4 多态;3.4.1 多态应用;3.4.1 多态应用;3.4.2 引用变量的强制类型转换 ;3.4.2 引用变量的强制类型转换 ;3.4.3 instance of运算符 ;3.4.4 学生...

    重载与覆写/重写的区别

    * 对父类Shape中getSide方法进行重写,实现多态 * @return */ public int getSides() { return 3; } // end // begin /** * 3. 重写和被重写方法返回值必须相同 * 此方法错误 */ // public double ...

    Java——多态与接口.rar

    1、实验题目:多态和接口编程 2、实验目的:掌握重载、覆盖的多态Java编程,理解类的继承和接口实现的内涵,掌握向上转型的编程技术。

    基于C++中覆盖,重载,隐藏的一点重要说明

    C++覆盖 重载 隐藏是三个经常容易混淆的概念 这里我们简单总结下: 1.重载的条件(编译时多态) a.同一个类中 b.函数名相同,参数不同(返回值不能作为重载的条件) c.与函数是否为虚函数无关 2.覆盖的条件(运行时多态) a...

    javascript 面向对象编程基础 多态

    其它面向对象语言的多态一般都由方法重载和虚方法来实现多态,Javascript也通过这两种途径来实现! 重载:由于Javascript是弱类型的语言,而且又支持可变参数,当我们定义重载方法的时候,解释器无法通过参数类型和...

    C++中的重载、覆盖、隐藏介绍

    前几天面试时被问及C++中的覆盖、隐藏,概念基本答不上来,只答了怎么用指针实现多态,也还有遗漏。最终不欢而散。回来后在网上查找学习了一番,做了这个总结。其中部分文字借用了别人的博客,望不要见怪。 •概念 ...

    PHP重载基础知识回顾

    重写一般指函数的覆盖,即相同签名的成员函数在子类中重新定义(实现抽象函数或接口不是重写),是实现多态(polymorphism)的一种关键技术。成员变量也可以重载/覆盖,但一般不会这么做。 用简单的C代码来说明重载...

    关于Java的几个经典问题

    到底创建了几个String对象(三)——变量(属性)的覆盖 (四)——final、finally和finalize的区别 (五)——传了值还是传了引用(六)——字符串(String)杂谈 (七)——日期和时间的处理 (八)——聊聊基本...

    php面向对象的方法重载两种版本比较

    对于多态的实现,PHP4 只支持覆盖(override),而不支持重载(overload)。但我们可以通过一些技巧来“模拟”重载的实现。 PHP5 虽然可以支持覆盖和重载,但重载在具体实现上,和其他语言还有较大的差别。 1,在 PHP4 ...

Global site tag (gtag.js) - Google Analytics