C# 多态性
时间:2014-03-22 06:12:59
收藏:0
阅读:425
(1)定义:
多态是针对派生类和基类的具有相同签名的方法而言的。基类定义并且实现了声明为 virtual 或者abstract的方法,然后派生类通过关键词 override来重写他们
(2)传递性之 virtual:
A是基类,B继承A,C继承B,如果A中有声明为virtual的属性或者方法,那么不管B中是否针对该属性,方法声明为override,C都可以overrideA中的这一virtual属性或者方法
传递性之 interface
(3)总结:
接口声明的方法不具有传递性,virtual声明的方法具有传递性。能够override的只能是标记为virtual,abstract,override的。
多态是针对派生类和基类的具有相同签名的方法而言的。基类定义并且实现了声明为 virtual 或者abstract的方法,然后派生类通过关键词 override来重写他们
(2)传递性之 virtual:
A是基类,B继承A,C继承B,如果A中有声明为virtual的属性或者方法,那么不管B中是否针对该属性,方法声明为override,C都可以overrideA中的这一virtual属性或者方法
传递性之 interface
namespace ConsoleApplication6Override { interface Interface1 { void func1(int x); void func2(string str); } class Class1:Interface1 { public void func1(int x) { Console.WriteLine("this is in Class1 inherits Interface1"); } public void func2(string str) { Console.WriteLine("this is in Class1 inherits Interface1"); } } //error ,继承成员“ConsoleApplication6Override.Class1.func1(int)”未标记为 virtual、abstract 或 override,无法进行重写 //error,继承成员“ConsoleApplication6Override.Class1.func2(string)”未标记为 virtual、abstract 或 override,无法进行重写 class Class2:Class1 { public override void func1(int x) { } public override void func2(string str) { } } }
(3)总结:
接口声明的方法不具有传递性,virtual声明的方法具有传递性。能够override的只能是标记为virtual,abstract,override的。
原文:http://blog.csdn.net/ddupd/article/details/21718391
评论(0)