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

  • 相关阅读:
    Linux命令-chmod、chown和chgrp
    UUID是如何保证全局唯一的
    Java实现HTML转换为PDF的常见方法
    Java内存溢出详解
    Java 版本6下载大全
    spring 标签
    java 静态成员访问
    Java开发之@PostConstruct执行顺序
    Java集合和数组的区别
    集合转数组的toArray()和toArray(T[] a)方法
  • 原文地址:https://www.cnblogs.com/Lulus/p/12743384.html
Copyright © 2011-2022 走看看