2012-04-29 10:20:20|?次阅读|上传:wustguangh【已有?条评论】发表评论
多态性主要的表现形式就是在继承中当派生类从基类继承时,它会获得基类的所有方法、字段、属性和事件。当父类和子类的成员签名相同的时候,我们可以定义让子类的这个同名成员以何种形式显示出来,父类的这个的成员在子类中又用何种方式存在,这种多面的表现方法我们称为多态。下面对C#进行多态编程相关的概念进行介绍,并在最后给出相关的实例。
重载就是在同一个类中的多个同名方法,只是这些方法的参数列表不同(参数个数,或者是相同位置的参数类型不同),而返回值可以相同,也可以不相同。这样才能通过传递不同的参数来决定到底调用哪一个。
重载特征:
a:存在于同一个类中
b:具有相同的函数名,但参数列表不同,函数返回值类型可以相同也可以不同.
也叫做覆写,继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的;简单的说,就是指相同的方法名,相同的参数列表(参数个数以及相同位置的参数类型相同)以及相同的函数返回值.
例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.
基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。
当从父类派生了很多子类时,由于每个子类都有其不同的代码实现。
总结:
重载时,根据参数选择调用的方法;
重写时,访问父类子类皆调用子类的重写方法;
隐藏时,访问父类则调用父类的方法,访问子类则调用子类的方法。
抽象类用abstract 修饰,同样方法用abstract 修饰的就是抽象方法。
抽象类不能实例化。
抽象类可以包含抽象方法和抽象访问器。
不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。
重载 overload修饰(参数的个数不一致,参数的类型不一致,方法名相同)与方法的返回类型无关,重载一般发生在同一个类里。
重写(字面意思就是重新实现) override 是对父类的方法进行实现,这个“重新设计”的的基础是方法名和参数完全一致,但是内部实现体不一样。
重写一般发生在父类和子类之间,一般父类定义一个虚方法或抽象方法,子类根据具体情况“重写”其中的实现。
override 方法和 virtual 方法必须具有相同的访问级别修饰符。