密封的关键字混淆

时间:2010-10-31 07:21:30

标签: c#-2.0

using System;

class A
{
   public virtual void F() {
      Console.WriteLine("A.F");
   }
   public virtual void G() {
      Console.WriteLine("A.G");
   }
}

class B: A
{
   sealed override public void F() {
      Console.WriteLine("B.F");
   } 
   override public void G() {
      Console.WriteLine("B.G");
   } 
}

class C: B
{
   override public void G() {
      Console.WriteLine("C.G");
   } 
}

在上面的问题中我想知道类c没有名称为f()的方法我的意思是如果我创建它的对象并访问方法f()它会抛出错误吗?如果是,那么我想知道因为继承类c应该有一个名为f()的类A的方法...所以我不能称之为?

1 个答案:

答案 0 :(得分:2)

您无法从派生类中删除基类中的方法;这将违反LSP,并且可以通过简单地投射到基地而轻易地被击败。 sealed关键字阻止任何派生类重写该方法;它没有隐藏它。

相关问题