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

namespace 接口
{
//Interface 没有class关键字 一般使用"IXxxx"命名书写

/// <summary>
/// 注意事项
/// 1.接口中所有方法都是抽象方法,所有接口不能被实例化
/// 2.一个类可以实现多个接口,被实现的接口之间用”逗号,“隔开
/// 3.一个接口可以继承多个接口(类只能单继承),接口之间也用逗号分隔
/// </summary>

interface IFly
{
    //接口中不能包含“字段”
    //private string s;

    //但可以包含属性--(自动属性)
    //public string Id { get; set; }
    //string Id { get; set; }

    //接口中的方法不能有“方法体”,全部都是抽象方法,但不需要abstract修饰。
    void Fly();

    //public void Hello();
    //接口中的成员不允许添加访问修饰符,默认全是public。



}

}

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

namespace 接口
{
class Car
{
private string brand;

    public string Brand
    {
        get { return brand; }
        set { brand = value; }
    }

    /*public Car()
    {

    }*/

    public Car (string brand)
    {
        this.brand = brand;
    }

    public void Run()
    {
        Console.WriteLine("{0}品牌的汽车在奔跑", brand );
    }
}

}

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

namespace 接口
{

class Batmobile:Car ,IFly   //接口(为子类提供父类没有的“附加功能”。
{
    public Batmobile(string brand) : base(brand)
    {

    }

    public void Fly()//接口中的方法与类中重名时可使用显示实现 public IFly.Fly(){}
    {
        Console.WriteLine("{0}正在飞行", base.Brand);
    }
}

}

//程序
using System;

namespace 接口
{

class Program
{
    static void Main(string[] args)
    {
        BMWCar c1 = new BMWCar("750");
        c1.Run();

        Batmobile bat = new Batmobile("BatMan");
        bat.Run();
        bat.Fly();
    }
}

}