如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual 和 override,派生类的方法就会隐藏基类的方法。一般要求在派生类相同签名的方法上加上new关键字。
访问修饰符 new 类型 成员名
new 访问修饰符 类型 成员名
如果父类中的方法使用virtual关键字修饰,子类中的同名方法使用override修饰,那么该方法就构成了方法的重写。
public virtual 方法名称(参数列表){方法体;} //基类
public override 方法名称(参数列表){方法体;} //派生类
不管是方法隐藏还是方法重写,父类对象调用的是父类的方法,而子类对象调用的是子类的方法。
一个基类的引用,可以指向多个派生类对象,具有多种不同的形态,这种现象叫做多态性。
多态性允许你将父对象设置成为一个或更多的它的子对象,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。
class B:A{
……
}
A a = new A();
A b = new B();
static void test(A a);
A a=new A();
B b=new B();
test(b);