C# 类(15) 接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
/*接口只声明、无实现、不能实例化;
接口可包含方法、属性、事件、索引器, 但无字段;
接口成员都是隐式的 public, 不要使用访问修饰符;

类、结构和接口都可以继承多个接口;
继承接口的类必须实现接口成员, 除非是抽象类;
类实现的接口成员须是公共的、非静态的.*/

   // 定义接口
    interface Myinterface
    { 
        //在接口里面声明一个方法, 没有实现. 也不能有实现
        int Num(int i, int s);
    }

    // 实现接口
    class MyClass : Myinterface
    {
       public int Num(int i, int s) //由于接口里面的成员都是public 所以实现的时候也要是public , 否则会报错.
        { return i + s; }
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    //下面试试一个接口多个实现.

    interface Myinterface1
    {
        int Num(int i, int s);
    }
    // 多个实现.
    class Add : Myinterface1  // 实现1 加法
    {
        public int Num(int i, int s)
        { return i + s; }
    }

    // 实现2  减法
    class Sub : Myinterface1
    {
        public int Num(int i, int s)
        { return i - s; }
    }
    

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    // 多个接口一个类实现.
    interface face
    { int Num(int i, int s);}
    interface face1
    { int Num(int i, int s);}
    // 一个类来实现两个接口,并且显示的实现.
    /* 显示实现接口不需要访问修饰符; 但显示实现的方法只能通过接口访问 */
    class MyFace : face, face1
    { int face.Num(int i, int s) { return i + s; } // 实现第一个. 
      int face1.Num(int i, int s) { return i - s; } // 实现第二个.
    }
    

    class Program
    {
        static void Main(string[] args)
        {
            //单个接口单个实现
            MyClass My = new MyClass();
            Console.WriteLine(My.Num(10, 9)); // 19
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //一个接口的多个实现.
            Add jiafa = new Add();
            Console.WriteLine(jiafa.Num(56,35)); //91
            Sub jianfa = new Sub();
            Console.WriteLine(jianfa.Num(56,35));//21
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            // 多个接口一个类实现. 只能通过接口访问.
            face  Myjiafa = new MyFace();
            face1 Myjianfa = new MyFace();
            Console.WriteLine(Myjiafa.Num(20,10));//30
            Console.WriteLine(Myjianfa.Num(20,10));//10
            
        }
    }
}

 

posted @ 2012-10-07 21:59  梦断难寻  阅读(420)  评论(0编辑  收藏  举报