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

  • 相关阅读:
    JS图片宽度自适应移动端
    SQL语句中drop、truncate和delete的用法
    C#求百分比
    JS刷新后回到页面顶部
    JS返回上一页并刷新代码整理
    jQuery 获取设置图片 src 的路径
    C#银行卡号每隔4位数字加一个空格
    input标签内容改变时触发事件
    C#的Split()方法
    数据库常见性能问题调优
  • 原文地址:https://www.cnblogs.com/Lulus/p/12743384.html
Copyright © 2011-2022 走看看