C#编程override、virtual、new、abstract修饰符总结

2012-04-29 10:20:20|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C#|来源:唯设编程网

多态性主要的表现形式就是在继承中当派生类从基类继承时,它会获得基类的所有方法、字段、属性和事件。当父类和子类的成员签名相同的时候,我们可以定义让子类的这个同名成员以何种形式显示出来,父类的这个的成员在子类中又用何种方式存在,这种多面的表现方法我们称为多态。下面对C#进行多态编程相关的概念进行介绍,并在最后给出相关的实例。

1.基本概念:

1.1 重载:

重载就是在同一个类中的多个同名方法,只是这些方法的参数列表不同(参数个数,或者是相同位置的参数类型不同),而返回值可以相同,也可以不相同。这样才能通过传递不同的参数来决定到底调用哪一个。

重载特征:

    a:存在于同一个类中

    b:具有相同的函数名,但参数列表不同,函数返回值类型可以相同也可以不同.

1.2 重写:

也叫做覆写,继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的;简单的说,就是指相同的方法名,相同的参数列表(参数个数以及相同位置的参数类型相同)以及相同的函数返回值.

例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

1.3 隐藏:

基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。

1.4 多态:

当从父类派生了很多子类时,由于每个子类都有其不同的代码实现。

总结:

    重载时,根据参数选择调用的方法;

    重写时,访问父类子类皆调用子类的重写方法;

    隐藏时,访问父类则调用父类的方法,访问子类则调用子类的方法。

2. 常用修饰符:

2.1. 抽象(abstract):

   抽象类用abstract 修饰,同样方法用abstract 修饰的就是抽象方法。

   抽象类不能实例化。

   抽象类可以包含抽象方法和抽象访问器。

    不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。

2.2. 重载(overload)

  重载 overload修饰(参数的个数不一致,参数的类型不一致,方法名相同)与方法的返回类型无关,重载一般发生在同一个类里。

2.3. 重载override

    重写(字面意思就是重新实现) override 是对父类的方法进行实现,这个“重新设计”的的基础是方法名和参数完全一致,但是内部实现体不一样。

    重写一般发生在父类和子类之间,一般父类定义一个虚方法或抽象方法,子类根据具体情况“重写”其中的实现。

    override 方法和 virtual 方法必须具有相同的访问级别修饰符。   

<12>
发表评论0条 】
网友评论(共?条评论)..
C#编程override、virtual、new、abstract修饰符总结