在C#语言中是没有多重继承功能的,如果我们在项目应用需要用多重继承来实现一些功能的时候,也还是可以做到的,虽然不是太方便。在C#语言中,类是不能多重继承的,但是接口可以多重继承。因此在此实现多继承的原理就是,为每个类建立具有相同方法名的接口,并实现这些接口,然后在子类中继承这些接口,并将实现的类作为子类的字段。
开发环境:VS2005 .NET2.0
项目下载地址:MuiltExtends.zip
///BookBase.cs
using System;
namespace XFish.Demo
{
/// <summary>
/// 书的基类
/// </summary>
public abstract class BookBase
{
#region 类初始化
public BookBase()
{
}
#endregion
}
}
///IAuthor.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace XFish.Demo
{
/// <summary>
/// 作者类的接口
/// </summary>
public interface IAuthor
{
string GetName();
void SetName(string name);
void SetEmail(string email);
string GetEmail();
}
}
///Author.cs
using System;
namespace XFish.Demo
{
/// <summary>
/// 作者
/// </summary>
public class Author : BookBase,IAuthor
{
#region 类内部变量
private string _Name;
private string _Email;
#endregion
#region 类初始化
public Author()
{
_Name = "虞晓杰";
_Email = "fishyxj@sina.com";
}
#endregion
#region 类方法
/// <summary>
/// 显示作者的姓名
/// </summary>
public string GetName()
{
return _Name;
}
/// <summary>
/// 设置作者的姓名
/// </summary>
/// <param name="name">作者姓名</param>
public void SetName(string name)
{
_Name = name;
}
/// <summary>
/// 设置Email
/// </summary>
/// <param name="email">Email地址</param>
public void SetEmail(string email)
{
_Email = email;
}
/// <summary>
/// 获取Email
/// </summary>
/// <returns></returns>
public string GetEmail()
{
return _Email;
}
#endregion
}
}
///IContents.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace XFish.Demo
{
/// <summary>
/// 内容的接口
/// </summary>
public interface IContents
{
string GetChapter(int chapter);
}
}
///Contents.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace XFish.Demo
{
/// <summary>
/// 内容
/// </summary>
public class Contents:BookBase,IContents
{
#region 类内部变量
private List<string> _Chapters;
#endregion
#region 类初始化
public Contents()
{
_Chapters = new List<string>();
_Chapters.Add("第一章 态度决定一切");
_Chapters.Add("第二章 学无止境");
_Chapters.Add("第三章 交付用户想要的软件");
}
#endregion
#region 类方法
/// <summary>
/// 获取章节
/// </summary>
/// <param name="chapter">章节序号</param>
/// <returns>章节内容</returns>
public string GetChapter(int chapter)
{
chapter -= 1;
if (0 <= chapter && chapter < _Chapters.Count)
return _Chapters[chapter];
return string.Empty;
}
#endregion
}
}