您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



[cc]一个学习接口的例子
狼子 发表于 2007-6-3 22:50:00 阅读全文 | 回复(0) | 引用通告 | 编辑

《C#与.net Framework实战演练》P212 11-8 使用接口

为了达到抽象化(Abstraction)的目的,需要在功能提供者与功能使用者之间提供一个共享的规则,功能提供者与功能使用者都要按照这个规范来提供、使用这些功能。这个共享的规范就称为接口(Interface)。就C#来说,接口定义了功能数量、函数名称、函数参数和参数顺序等。

因此,在接口不变的前提下,功能提供者就可以任意地覆盖函数中的代码,而不会影响到使用这些功能的程序,可以减轻维护上的负担,并增强程序的派生性。

下面是今天晚上大山峰对接口的用处举的一个例子

乞力马扎罗() 21:10:07
例如上帝定义一个接口,IMan,该接口中定义了一个方法Love(IWoman girl)

乞力马扎罗() 21:10:23
上帝仅仅是给出了这个接口的定义

乞力马扎罗() 21:11:07
具体怎么去实现就需要实现了该接口的每一个实例自己去想办法了

P215

声明接口时要注意:

·接口声明可以包含接口属性、事件和内容声明,跟接口的方法一样,只有声明没有内容块

·一个类可以实现零到多个接口,但不能继承多个类。而一个接口则允许继承多个接口。

·类必需实现所有继承下来的接口的所有接口方法,不允许只实现部分的方法。

以下是P213的例子,有不同,因为书上原来的不是完整的程序代码

using System;

namespace studyInterface
{
    //定义两个接口,在接口里,只声明方法,不包含方法的内容块
    interface IJob
    {
        //定义在接口中的方法隐含是public
        double ComputeSalary();
    }
    interface IInsurance
    {
        double ComputeGinBouFee();
    }

    //定义类Employee,声明这个类继承自IJob和IInsurance两个接口
    public class Employee : IJob, IInsurance
    {
        //定义三个成员变量
        protected string mstrEmpID = "";
        protected string mstrEmpName = "";
        protected double mdblBaseSalary = 0;

        //构造函数
        public Employee(string EmpID, string EmpName, double BaseSalary)
        {
            mstrEmpID = EmpID;
            mstrEmpName = EmpName;
            mdblBaseSalary = BaseSalary;
        }

        //实现继承到的两个接口里声明过的所有方法
        //实现时和接口中的方法声明拥有四个相同:访问权限、返回值类型、方法名、参数
        public virtual double ComputeSalary()
        {
            return mdblBaseSalary;
        }
        public virtual double ComputeGinBouFee()
        {
            return mdblBaseSalary * 0.01;
        }

        //Employee类的其他方法
        public string GetEmpID()
        {
            return mstrEmpID;
        }
        public string GetEmpName()
        {
            return mstrEmpName;
        }
    }
       
    public class Program
    {
        public static int Main()
        {
            Employee e1 = new Employee("001", "Miles", 5000);
            Console.WriteLine("员工:员工名称={0},员工代号={1},工资={2},保健费={3}", e1.GetEmpName(), e1.GetEmpID(), e1.ComputeSalary(), e1.ComputeGinBouFee());
            return 0;
        }
    }
}

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.