C#中的多重继承

在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
    }
}

  

  

posted @ 2011-09-27 16:07  筱溪飞鱼  阅读(688)  评论(0编辑  收藏