关于父子类方法的继承

父类一个virtual方法,一个普通方法;子类复写virtual,同时具有同名普通方法(使用new)。则Parent p = new Son();产生有趣结果:

    class Program
    
{
        
static void Main(string[] args)
        
{
            Parent p 
= new Son();
            p.foo();
            p.foo2();

            Console.Read();
        }

    }


    
public class Parent
    
{
        
public virtual void foo()
        
{
            Console.WriteLine(
"parent foo");
        }


        
public void foo2()
        
{
            Console.WriteLine(
"parent foo2");
        }

    }


    
public class Son : Parent
    
{
        
public override void foo()
        
{
            Console.WriteLine(
"Son foo");
        }


        
public new void foo2()
        
{
            Console.WriteLine(
"Son foo2");
        }

    }

我的理解是:p对象执行虚方法,则要到其Son子类去找复写方法;p对象执行普通方法,使用自身的方法即可——不用考虑子类的new方法。
posted @   包建强  Views(443)  Comments(0Edit  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示