2011-09-17 30 views

回答

4

刚才看了一下,记录自己;-)

The C# Station Tutorial-Lesson 9: Polymorphism

base是你通常所说的基类中的方法,在Java中称为super如果我没看错的。

所以当你写一个方法base.Name时,你会得到你的类继承/派生的基类的Name属性。

5

这是一种语言的关键字被用于指代基类,当前一个由(延伸)继承的类。当您创建扩展另一个类的实例时,该实例也可以作为基类来处理或使用。

虚拟

这意味着性质或功能可以在延伸类中重写(类从基类定义性质或功能继承)一种功能或性质改性剂。重写函数或属性必须与原始定义具有相同的签名,但可以更改实现。虚拟函数或属性必须立即在其定义的类中实现,而抽象方法或属性仅在扩展类中实现。

倍率

用于指示就下面的功能或性质或延伸覆盖从基类的等效功能或性质的编译器的功能或性质改性剂。

2

base:在使用基本类型而不是当前类型定义的成员时使用。

virtual:方法和属性可以是虚拟的,这意味着它们可以被更专门的类覆盖。

override:当一个虚拟方法应该被一个新的实现在降序类中覆盖时,你必须使用这个关键字而不是virtual

实施例:

class A { 
    public void X() {} 
    public virtual void Y() {} 
} 

class B: A { 
    public new void X() {} // defines a new method which does not override A.X 

    public override void Y() { // override A.Y with a new implementation 
    base.Y(); // calls the A.Y implementation 
    } 

    public virtual void Z() {} // additional virtual method on B 
} 

A a = new B(); 
a.X(); // calls A.X, not B.X 
a.Y(); // calls B.Y because it is virtual and overridden 
a.Z(); // syntax error - Z does not exist on an instance of type A