http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 10242|回复: 5

[C#入门] 接口-一种特殊安排的类

[复制链接]
发表于 2015-6-13 06:47:42 | 显示全部楼层 |阅读模式
本帖最后由 wwwconsumer 于 2015-6-13 06:54 编辑

世界上很多组织致力于标准化工作,标准化可以增强产品的通用性,使产品应用更加方便。在软件领域,实现标准化的一种方法就是制定统一的接口(Interfeace).比如,很多银行都会编写自己的账户系统,但他们都愿意使用相同的接口,以便实现不同银行系统之间的转账业务。在本论坛上,我看到了本坛主苏飞准备开讲接口一章,但迟迟没有公开讲课内容。而本人又是初学,实在也不知从哪里举例。只好将本人正在学习的《叩响C#之门》(梁斌玉编著,电子工业出版社)之中的“接口”一节原样抄录,里面的版权属于原作者,本人只是为了方便自己学习而依葫芦哦画瓢进行了模仿而已。
首先,我们创立一个Ibank的项目,然后在菜单栏单击【项目】菜单,选择【添加新项】命令,在弹出的【添加新项】窗口中选择“接口”模板,然后在名称一栏中填入接口的名称“IBankAccount”。
[C#] 纯文本查看 复制代码
//定义接口:银行账户
namespace IBank
{
    interface IBankAccount
    {
        //函数:存款
        void PayIn(decimal amount);
        //函数:取款
        bool WithShowMyself(decimal amount);
        //属性:账户余额
        decimal Balance { get; }
    }
}

现在我们编写一个继承于接口IBankAcount的银行账户类,不同的银行可以有不同的实现方法,但均需实现IBankAccount接口中的所有成员。实际上,接口是对所有的程序开放的,你在创建的类中输入继承符号时,能使用的接口自动会跳出来供你选择。

建立银行账户

建立银行账户

具体代码如下:
[C#] 纯文本查看 复制代码
{//类:银行账户
    class SaverAccount:IBankAccount
    {
        //私有变量:余额
        private decimal balance;
        //函数:存款
        public void PayIn(decimal amount)
        {
            balance += amount;
        }
        //函数:取款
        public bool WithShowMyself(decimal amount)
        {
            if (balance >= amount)
            {
                balance -= amount;
                return true;
            }
            else
            {
                Console.WriteLine("余额不足,取款失败。");
                return false;
            }
        }
        //属性:账户余额
        public decimal Balance
        {
            get
            {
                return balance;
            }
        }
    }


然后我们在主程序中实现存取款功能。
[C#] 纯文本查看 复制代码
static void Main(string[] args)
        {
            IBankAccount myAccount = new SaverAccount();
            ITransferBankAccount yourAccount = new TransferAccount();
            myAccount.PayIn(10000);
            yourAccount.PayIn(30000);
            //myAccount.WithShowMyself(200);
            //Console.WriteLine("余额:{0}",myAccount .Balance);
}

运行结果如下:

试着存取款

试着存取款


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-6-13 16:43:21 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-6-13 16:45:24 | 显示全部楼层
接口的继承
新接口也可以继承旧接口,继承方式与类相同。
下面我们定义一个新的接口ITransferBankAccount,它继承于IBankAccount接口,多了一个用于转账的函数成员。
[C#] 纯文本查看 复制代码
 interface ITransferBankAccount:IBankAccount
    {
        //函数:转账
        bool TransferTo(IBankAccount destination,decimal amount);
    }
 楼主| 发表于 2015-6-13 16:48:16 | 显示全部楼层
下面,我们设计一个类,实现ITransferBankAccount接口。
[C#] 纯文本查看 复制代码
 class TransferAccount:ITransferBankAccount 
    {
        //私有变量:余额
        private decimal balance;
        //函数:存款
        public void PayIn(decimal amount)
        {
            balance += amount;
        }
        //函数:取款
        public bool WithShowMyself(decimal amount)
        {
            if (balance >= amount)
            {
                balance -= amount;
                return true;
            }
            else
            {
            Console .WriteLine ("余额不足,取款失败。");
                return false ;
            }
        }
        //属性:账户余额
        public decimal Balance
        {
            get
            {
                return balance;
            }
        }
        //函数:转账
        public bool TransferTo(IBankAccount destination, decimal amount)
        {
            bool result = WithShowMyself(amount);
            if (result == true)
            {
                destination.PayIn(amount);
            }
            return result;
        }

    }
 楼主| 发表于 2015-6-13 16:52:45 | 显示全部楼层
好了,现在你可以向我转账了。
[C#] 纯文本查看 复制代码
static void Main(string[] args)
        {
            IBankAccount myAccount = new SaverAccount();
            ITransferBankAccount yourAccount = new TransferAccount();
            myAccount.PayIn(10000);
            yourAccount.PayIn(30000);
                     //你向我转5000元
            yourAccount.TransferTo(myAccount, 5000);
            Console.WriteLine("我的余额:{0}",myAccount .Balance );
            Console.WriteLine("你的余额:{0}", yourAccount.Balance);
        }


运行结果:

转账结果

转账结果
发表于 2015-12-26 16:20:05 | 显示全部楼层
受教了学习中……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-3-29 16:19

© 2014-2021

快速回复 返回顶部 返回列表