C# 多态性

来源:互联网 发布:文华财经模拟软件 编辑:程序博客网 时间:2024/05/21 09:18
(1)定义:
多态是针对派生类和基类的具有相同签名的方法而言的。基类定义并且实现了声明为 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的。
0 0