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


//要实现多个接口的相同名称的方法,必须在接口的实现部分注意以下两点。
//1.有相同的名称的方法在实现时,前面不能加上public等关键词。每个方法前必须冠以相应的接口名。
//  例如:
//        void IFace1.Say();
//        void IFace2.Say();
//2.对于不同名称的方法,前面必须冠以“public”标识符。
//  例如:
//        public void Hello();
//以上两个规则缺一不可。
//创建派生类的实例时,如果调用了某个接口的实现,则必须将实例强制转换为相应接口类型。
//    例如:
//            FacetoFace facetest = new FacetoFace();
//            ((IFace1)facetest).Say();
//            ((IFace2)facetest).Say();
namespace Interface
{
    interface IFace1
    {
        void Say();
        void Hello();
    }
    interface IFace2
    {
        void Say();
        void Goodbye();
    }
    class FacetoFace:IFace1,IFace2
    {
        void IFace1.Say()
        {
            Console.WriteLine("这是IFace1的say方法");
        }
        public void Hello()
        {
            Console.WriteLine("这是IFace1的Hello方法");
        }
        void IFace2.Say()
        {
            Console.WriteLine("这是IFace2的say方法");
        }
        public void Goodbye()
        {
            Console.WriteLine("这是IFace2的Goodbye方法");
        }
        static void Main(string[] args)
        {
            FacetoFace facetest = new FacetoFace();
            ((IFace1)facetest).Say();
            ((IFace2)facetest).Say();
            facetest.Hello();
            facetest.Goodbye();
            Console.ReadKey();
        }
    }
}