C++:

Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。

Override(覆盖):是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。

Overwrite(重写):是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual
关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual
关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

特别注意

如果基类有某个函数的多个重载(overload)版本,而你在子类中重写(overwrite)了其中的一个,或是子类添加新的函数版本,则所有基类的重载版本都被遮蔽。所以,正常情况下,在子类中应重写基类中的所有重载版本。

具体地讲,继承类中的重载和重写都包含了重写的涵义,即只要函数名一样,基类的函数版本就会被遮蔽,所以,在派生类中要保持基类的重载版本,就应该重写所有基类的重载版本。重载只在当当前类中有效,继承会失去重载的特性。也就是说,把基类的重载函数放在继承类里,就必须重写。

转自:http://blog.csdn.net/colinchan/archive/2009/08/27/4489073.aspx

C#:

overload (重载)关键字: 无
1.使用的地方:同一类里。(其实是同一类里同一名称的方法不同版本的一种叫法)
2.要重载的方法和被重载的方法要求:参数列表不同或返回类型和参数列表都不同,只有返回类型不同不能重载。(所谓的参数列表不同就是参数个数或者参数类型不同或者二者都不同)

overwrite (重写)关键字:new
1.用来是从父类继承的与是由了new关键字的方法的方法名一样的所以方法无效就像父类里不存在这些方法一样。只要去方法名一样别的没要求。

override (覆写)关键字: override 
1.override的方法必须父类的(直接父类或间接父类(就是向上n层的父类))虚方法或抽象方法其中抽象方法是必须覆写的。
2.要求3处相同
相同的方法名称称;
相同的参数列表;
相同的返回类型。

using System;
using System.Collections.Generic;
using System.Text;

namespace Override_Overload_Overwrite
{
    class Parent
    {
        public void F()
        {
            Console.WriteLine("Parent.F()");
        }
        public virtual void G()
        {
            Console.WriteLine("Parent.G()");
        }
        public int Add(int x, int y)
        {
            return x + y;
        }
        //重载(overload)Add函数
        public float Add(float x, float y)
        {
            return x + y;
        }
    }
    class ChildOne:Parent
    {
        //重写(overwrite)父类函数
        new public void F()
        {
            Console.WriteLine("ChildOne.F()");
        }
        //覆写(override)父类虚函数,主要实现多态
        public override void G()
        {
            Console.WriteLine("ChildOne.G()");
        }
    }
    class ChildTwo:Parent
    {
        new public void F()
        {
            Console.WriteLine("ChildTwo.F()");
        }
        public override void G()
        {
            Console.WriteLine("ChildTwo.G()");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Parent childOne = new ChildOne();
            Parent childTwo = new ChildTwo();
            //调用Parent.F()
            childOne.F();
            childTwo.F();
            //实现多态
            childOne.G();
            childTwo.G();
            Parent load = new Parent();
            //重载(overload)
            Console.WriteLine(load.Add(1, 2));
            Console.WriteLine(load.Add(3.4f, 4.5f));
            Console.Read();
        }
    }
}

转自:http://www.cublog.cn/u1/39332/showart_1330863.html

完!

Overload Overwrite Override相关推荐

  1. 公有/私有/保护继承、overload/overwrite/override之间的区别

    一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...

  2. 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别...

    一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...

  3. oracle中overwrite写法,Overload Overwrite Override

    overload(重载)关键字: 无 1.使用的地方:同一类里.(其实是同一类里同一名称的方法不同版本的一种叫法) 2.要重载的方法和被重载的方法要求:参数列表不同或返回类型和参数列表都不同,只有返回 ...

  4. C++中的Overload、Override和Overwrite

    在C++语言中有一组基础的概念一直都容易混淆:Overload.Override和Overwrite分别表示什么意思?下面把这三个概念整理一下: 1. Overload(重载) 重载的概念最好理解,在 ...

  5. C++中override overload overwrite

    C++中override overload overwrite 1. overload(重载)(不是多态) 重载:是指同一可访问区内被声明的几个具有不同的参数列(参数类型.参数个数.顺序不同)的同名函 ...

  6. overload、override、new解释

    重载.重写.覆写,分别指的是overload.override.new. 一.override重写,是在子类中重写父类中的方法,两个函数的函数特征(函数名.参数类型与个数)相同.用于扩展或修改继承的方 ...

  7. 类的 三大特性 封装,继承,多态 overload与override的区别

    OOP三大特性:封装,继承,多态 封装的目的:为了让类更安全 封装的做法: 1.类里面的成员变量做为private 2.使用成员方法来间接访问成员变量 3.在该方法里面加限制条件 php类里面不允许出 ...

  8. idea重写接口没有@override_细说 Java Overload 与 Override 差别

    Java 编程五年多,我自以为已经熟谙 Overload 和 Override 背后的工作机制.当开始思考和记录下面这些案例时,才意识到我对它们的了解并不像自己想象的那样.为了让内容更有趣,下面会把它 ...

  9. Overload和Override的区别说明

    下文笔者讲述Overload和Override的区别简介说明,如下所示: Overload:重载Override:覆盖(重写)------------------------------------- ...

最新文章

  1. android实现底部弹出菜单,Android实现底部缓慢弹出菜单
  2. 【ZT】详细设计文档规范
  3. java xheditor 上传图片_xhEditor粘贴图片自动上传到服务器(Java版)
  4. mysql 5.5.46_MySQL 5.5.46源码安装
  5. 移动开发者周刊第一期,大家收到了么?
  6. php去除img,PHP如何去除IMG标签?_后端开发
  7. gromacs manual_GROMACS蛋白配体分子动力学模拟结果分析简要笔记
  8. 【Python实现杨辉三角】
  9. MacOS Aria2GUI配置
  10. 无参考图像质量评价——漏勺模型
  11. 网易博客搬家至CSDN博客指南
  12. 史上最全无线通信频率分配表
  13. 伽卡他卡免费电子教室软件_笔记
  14. Python之word2vec用法说明
  15. 年轻人猝死频发,AI应用到心血管疾患筛查还有多远?
  16. java语言简介论文,基于Java的Web论坛开发.doc
  17. Pandas数据分析实战01--Abalone Data Set(鲍鱼数据集)
  18. 研究人员利用黑猩猩改进动物模拟技术 效果显著!
  19. android中slider控件,range-slider-view
  20. java/php/net/python交互体验的电影评价系统设计

热门文章

  1. 乔布斯的64周年诞辰,苹果滞销的第N天
  2. Ubuntu系统添加root用户
  3. Linux LVM硬盘管理及LVM扩容
  4. 逻辑回归损失函数(cost function)
  5. Uber无人车在旧金山不仅仅是闯红灯,更大的问题是违法上路
  6. PostgreSQL在何处处理 sql查询之三十九
  7. 32位so库兼容64位使用
  8. Hibernate 具体用法(自整理)
  9. 华为实习日记——第四天
  10. 一些实用的 jQuery 技巧