new和override的区别?

new是给子类新增加了一个函数,可以说除了函数名字相同以外,它跟基类里面的这个同名函数没有任何关系。当使用子类的类型来调用的时候,它会运行子类中的函数,而如果类型是基类的话,被隐藏的基类函数就会站到前台来。只有使用virtual定义基类中的函数或者abstract定义的抽象方法,并使用override标记子类中的函数,才可以达到想要的多态类。
using  System;
using  System.Collections.Generic;
using  System.Text;

namespace  ConsoleApplication1
{
    
class Human
    
{
        
public virtual void Walk()
        
{
            Console.WriteLine(
"Human Walk!");
        }

    }


    
class Man : Human
    
{
        
public override void Walk()
        
{
            Console.WriteLine(
"Man Walk!");
        }

    }


    
class Woman : Human
    
{
        
public new void Walk()
        
{
            Console.WriteLine(
"Woman Walk!");
        }

    }

}

主函数调用
            Human h1  =   new  Man();
            h1.Walk();
            Human h2 
=   new  Woman();
            h2.Walk();
            Woman woman 
=   new  Woman();
            woman.Walk();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值