多态中的部分类






2.18/5 (5投票s)
使用 C# 在多态中实现部分类。
引言
部分类是 .NET 中最酷的类型之一。它允许我们将定义和实现分解为多个类。本文帮助您了解如何使用部分类型进行多态处理。
背景
假设我们了解多态。本文说明了普通多态和部分类型多态之间的区别,以及多态和部分类型的结合使用。
部分类实现
下面的示例代码在抽象类中实现了部分类型。AbstractClass
类有两个同名的部分类型声明。在第一个 AbstractClass
实现中,它有两个名为 GetMessage
和 GetClassID
的方法。在第二个 AbstractClass
实现中,它有一个名为 GetClassName
的方法。MainAbstractClass
继承了 AbstractClass
基类。我们有两个部分类,但所有方法都在单个继承中被调用。
// Partial types in abstract class.
namespace PartialClassPoly
{
public abstract partial class AbstractClass
{
public abstract string GetMessage();
public abstract int GetClassID();
}
public abstract partial class AbstractClass
{
public abstract string GetClassName();
}
public class MainAbstractClass : AbstractClass
{
public override string GetMessage()
{
return "Message from AbstractClass";
}
public override int GetClassID()
{
return 1;
}
public override string GetClassName()
{
return "AbstractClass";
}
}
}
下面的示例代码在接口中实现了部分类型。pInterface
接口有两个同名的部分类型声明。在第一个 pInterface
实现中,它有一个名为 GetMessage
的方法。在第二个 pInterface
实现中,它有两个名为 GetClassID
和 GetClassName
的方法。MainPolyInterfaces
实现了 pInterface
接口。我们有两个部分接口,但所有方法都在单个接口实现中被调用。
// Partial types in Interfaces.
namespace PartialClassPoly
{
public partial interface pInterface
{
string GetMessage();
}
public partial interface pInterface
{
int GetClassID();
string GetClassName();
}
public class MainPolyInterfaces : pInterface
{
public string GetMessage()
{
return "Message from PolyInterfaces";
}
public int GetClassID()
{
return 2;
}
public string GetClassName()
{
return "PolyInterfaces";
}
}
}
下面的示例代码在虚方法中实现了部分类型。VirtualMethods
类有两个同名的部分类型声明。在第一个 VirtualMethods
实现中,它有两个名为 GetMessage
和 GetClassID
的方法,在第二个 VirtualMethods
实现中,它有一个名为 GetClassName
的方法。MainVirtualMethods
继承了 VirtualMethods
基类。我们有两个部分类,但所有方法都在单个继承中被调用。
// Partial types in virtual methods.
namespace PartialClassPoly
{
public partial class VirtualMethods
{
public virtual string GetMessage()
{
return "Message from Virtual Methods";
}
public virtual int GetClassID()
{
return 3;
}
}
public partial class VirtualMethods
{
public virtual string GetClassName()
{
return "VirtualMethods";
}
}
public class MainVirtualMethods : VirtualMethods
{
public override string GetMessage()
{
return "Message from MainVirtualMethods";
}
public override int GetClassID()
{
return 4;
}
public override string GetClassName()
{
return "MainVirtualMethods";
}
}
}
关注点
在多态中实现部分类型为面向对象编程设定了边界。上述部分类型实现使用多态中的重写概念表示,并且可以使用多态中的重载概念以相同的方式进行实现。简而言之,部分类型可以将一个类分解为具有相同名称的类。
历史
- 创建于 2007 年 10 月 26 日。