zoukankan      html  css  js  c++  java
  • C#中重写、重载和隐藏的概念

    重写override

    用 override 关键字重新实现基类中的虚方法virtual
    在运行的过程中,无论通过哪个类型的引用,真正对象类型的方法将被调用

    隐藏

    隐藏是指用 new关键字重新实现基类中的方法
    在运行的过程中通过引用的类型判断应该调用哪个类型的方法

    父类Parent

    public class Parent
    {
    
    	public void NewMethod()
    	{
    		Console.WriteLine($"{nameof(Parent)}.{nameof(NewMethod)}");
    	}
    
    	public virtual void VirtualMethod()
    	{
    		Console.WriteLine($"{nameof(Parent)}.{nameof(VirtualMethod)}");
    	}
    
    	private void PrivateMethod()
    	{
    		//不可被子类访问
    	}
    }
    

    子类Child

    public class Child: Parent
    {
    	/// <summary>
    	/// 重写虚方法
    	/// </summary>
    	public override void VirtualMethod()
    	{
    		base.VirtualMethod();
    		Console.WriteLine($"{nameof(Child)}.{nameof(VirtualMethod)}");
    	}
    
    	/// <summary>
    	/// 隐藏、new关键词重新实现
    	/// </summary>
    	public new void NewMethod()
    	{
    		//base.NewMethod();
    		Console.WriteLine($"{nameof(Child)}.{nameof(NewMethod)}");
    	}
    }
    

    重载

    重载是指多个方法共享同一个名字并且拥有相同的返回值,但是却可以拥有不同的参数列表

    public void OverloadMethod()
    {
    	Console.WriteLine($"This is OverloadMethod");
    }
    
    public void OverloadMethod(string input)
    {
    	Console.WriteLine($"This is OverloadMethod:{input}");
    }
    
    public void OverloadMethod(int input)
    {
    	Console.WriteLine($"This is OverloadMethod:{input}");
    }
    
    public void OverloadMethod(bool input)
    {
    	Console.WriteLine($"This is OverloadMethod:{input}");
    }
    
    

    示例代码

    OverrideNewAndVirtual

  • 相关阅读:
    webstorm 2017 激活破解
    落在纸上的思考
    Mysql数据库备份脚本
    asp.net c# 打开新页面或页面跳转
    转正专业考试
    关于mysql-5.7.23-winx64.msi的安装
    win server 2012 R2 你需要先安装 对应于 KB2919355 的更新
    零碎
    按钮
    猪猪公寓——冲刺第一天
  • 原文地址:https://www.cnblogs.com/Lulus/p/12743384.html
Copyright © 2011-2022 走看看