C# 笔记——覆盖和重写

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

namespace ConsoleApplication1
{
    #region//重写父类同名方法
    class MyClass
    {
        public void ShowMessage()
        { Console.WriteLine("我是父类"); }
    }

    class MyClass1 : MyClass
    {
       new public void ShowMessage() // (new表示隐藏)这里就发生了重写,也可以说是隐藏了父类的方法. 这样做了之后就不能再使用父类的同名方法了.
        {
            Console.WriteLine("我是子类");
        }
    }
    #endregion
    #region 覆盖父类的同名方法.(实现多态)
    class My
    {
        public virtual void SHowMessage()  //使用virtual关键字表示这个方法会被覆盖.
        { Console.WriteLine("我是父类,我将要被覆盖."); }
    }
    class My1 : My
    {
        public override void SHowMessage()  // 使用override 关键字来表示覆盖父类的同名方法.  覆盖和重写不同的是覆盖可以再调用父类的同名方法, 加一个base关键字就可以了.
        {
            Console.WriteLine("我是子类,我覆盖了父类的同名方法");
            base.SHowMessage();  // 这里就调用了父类的SHowMessage方法.
        }
    }
    #endregion
    class Program
    {
        static void Main(string[] args)
        {
            MyClass1 My = new MyClass1();
            My1 my = new My1();
            My.ShowMessage(); // 输出我是子类
            my.SHowMessage(); // 输出我是子类,我覆盖了父类的同名方法  and 我是父类,我将要被覆盖
        }
    }
}
时间: 2024-11-08 19:21:26

C# 笔记——覆盖和重写的相关文章

覆盖与重写

public class Processer{        public virtual string Test()        {            return "virtual";        }        public string Test2()        {            return "father";        }} public class Processer2 : Processer{        public o

覆盖(重写)、重载。

覆盖(重写)一般发生在继承,实现接口中,子类继承父类,然后可以重写父类的方法. 重载和重写没有关联性,重载是参数个数或者参数类型不同,造成方法的重载. 1.参数个数不同构成重载. public int add(int ,int ); pulic int add(int); 2.参数类别不同构成重载. public int add (int ,int ); public double add(double ,double); 3.参数顺序不同构成重载. public double add(int,

C++学习笔记24,方法重写与方法隐藏

该博文仅用于交流学习,请慎用于任何商业用途,本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中重新编写父类中的虚函数的实现.要求子类中的函数必须跟父类中的原型一致. 包括返回值类型(协变返回类型不算)以及参数的数目,排列顺序. #include <iostream> #include <string> using namespace std; class base{ public: v

c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)

重载,隐藏(重定义),覆盖(重写)-这几个名词看着好像很像,不过其实一样都不一样!! 综述: 一.重载: (1)概念:在同一个作用域内:函数名相同,参数列表不同(参数个数不同,或者参数类型不同,或者参数个数和参数类型都不同),返回值类型可相同也可不同:这种情况叫做c++的重载! (2)举例: #include "stdafx.h" #include<iostream> using namespace std; int Add(int a, int b) { return a

覆盖、重写与重载的区别

覆盖又叫重写,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用.对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法.除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法.在覆盖要注意以下的几点: 1.重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2.重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>

函数重载和覆盖(重写)的区别

1.重载:函数重载是指在同一作用域内(名字空间),可以有一组具有相同函数名,不同参数列表的函数: 2.覆盖(也叫重写):指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现.即函数名和参数都一样,只是函数的实现体不一样: 3.隐藏:指派生类中的函数把基类中相同名字的函数屏蔽掉了,隐藏与另外两个概念表面上看来很像,很难区分,其实他们的关键区别就是在多态的实现上. 下面那种情形下myfunc函数声明是重载? A. namespace IBM { int myfunc(int a); } name

java中重载和覆盖(又称重写)的区别

初次见到这两个单词并没有什么特别的感觉,但是时间长了,却发现书上一会儿用override,一会儿又用overload,搞得我的迷迷糊.于是就做了个总结,希望能对和我一样对这两个概念模糊不清的网友有一个帮助. override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用.对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法.除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方

java中覆盖和重写

覆盖 概念:当子父类有相同的函数和参数列表时,子类的函数会覆盖父类的函数! 重载 区别: 重载只看参数列表,而覆盖是保证函数相同!

c++中的隐藏、重载、覆盖(重写)

[重载] 成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual关键字可有可无. [覆盖] 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类): (2)函数名字相同: (3)参数相同: (4)基类函数必须有virtual关键字. 令人迷惑的隐藏规则本来仅仅区别重载与覆盖并不算困难,但是C++的隐藏规则使问题复杂性陡然增加.这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生