0106-接口

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

namespace _07接口
{  
    /*接口代表这具有某种能力、只声明不实现、且不用修饰符默认public
     *不可以包含字段(但是可以包含属性)和构造函数
     *接口只能继承自接口,类和抽象类都可以继承自接口
    */
    class Program
    {
        static void Main(string[] args)
        {
            IDance[] dancer = {new Student("街舞"), new Teacher("交谊舞")};
            foreach (var item in dancer)
            {
                item.Dance(); //调用接口对象的Dance方法
                if (item is Teacher)
                {  //如果是教师类,则同时调用教师类本身的Dance方法
                    (item as Teacher).Dance();  //输出:老师本身会跳广场舞
                }
            }
            Console.ReadKey();
        }
    }

    interface IDance
    {
        string Dif { get; set; }
        void Dance();
    }
    class Person
    {
        
    }

    class Student : Person, IDance
    {
        public string Dif{get; set ; }
        public void Dance()
        {
            Console.WriteLine("学生会跳{0}",Dif);
        }

        public Student(string dif)
        {
            this.Dif = dif;
        }
    }

    class Teacher : Person, IDance
    {
        public string Dif { get; set; }

        public void Dance()
        {
            Console.WriteLine("老师本身会跳广场舞");
        }

        void IDance.Dance() //当类和接口有同名函数时,可以省略public关键字且函数名前增加接口类名称,显示的实现接口函数
        {
            Console.WriteLine("老师会跳{0}", Dif);
        }

        public Teacher(string dif)
        {
            this.Dif = dif;
        }
    }
}
凡哥,别他妈吹牛逼了
原文地址:https://www.cnblogs.com/sdlz/p/14694877.html