zoukankan      html  css  js  c++  java
  • 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 我是父类,我将要被覆盖
            }
        }
    }
  • 相关阅读:
    socket
    netstat
    列表
    突然发现不会写代码了
    算法资源
    bit位操作
    排序算法
    连续子数组最大和
    books
    凸优化
  • 原文地址:https://www.cnblogs.com/ytwy/p/5503905.html
Copyright © 2011-2022 走看看