new作为修饰符时的使用,以及接口的显式实现

先上代码:
namespace  ConsoleApplication1
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            BClass b 
= new BClass();

            ((AClass)b).Output();
            b.Output();
            ((IA)b).Output();

            Console.ReadLine();
        }

    }


    
public interface IA
    
{
        
void Output();
    }


    
public abstract class AClass : IA 
    
{
        
public AClass()
        
{
            Console.WriteLine(
"AClass");
        }


        
public virtual void Output()
        
{
            Console.WriteLine(
"AClass Output");
        }


        
IA Members#region IA Members

        
void IA.Output()
        
{
            Console.WriteLine(
"AClass Output Exlicitly");
        }


        
#endregion

    }


    
public class BClass : AClass
    
{
        
public BClass()
        
{
            Console.WriteLine(
"BClass");
        }


        
public new void Output()
        
{
            Console.WriteLine(
"BClass Output");
        }

    }

}
输出为:
AClass...
BClass...
AClass Output...
BClass Output...
AClass Output Exlicitly...

将代码中的new 替换为override,则输出变为:
AClass...
BClass...
BClass Output...
BClass Output...
AClass Output Exlicitly...

从以上代码我们可以看出:
new 作为修饰符时,其作用是隐藏从基类继承过来的方法,注意,仅仅是隐藏,这就意味着我们还是有办法调用到被隐藏的那个方法。而要调用被隐藏的那个方法,实现办法和要调用显示实现的接口方法一样。
而如果用override时,就会重写从基类继承过来的方法,那么,就怎么也调用不到基类的那个方法了。

转载于:https://www.cnblogs.com/bartholomew/archive/2008/06/26/1230635.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值