zoukankan      html  css  js  c++  java
  • C# 接口使用方法

           之前一直不理解接口这一概念,今天无意中翻书,网上查资料悟道其中的道理,现在工作没有用到interface这一块,怕以后会遇到忘记实现的方法便记录下来,哪里写的不对希望读者指出,话不多说,接下来看我对接口的理解。

    1.接口说明:

      接口为不同应用的实现提供了一中规范和约束,只要每个应用都遵守这种规范和约束,整个系统就可以得到有效的组织,从而为应用系统的低代价开发提供有效的途径。

      接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类《至少》要实现哪些功能,继承它的类可以增加自己的方法。

    2.接口声明:

        interface ISample
        {
            void f(int x);                              //方法
            int att { get; set; }                       //属性(可读,可写)
            event EventHandler OnDraw;                  //事件
            string this[int index] { get; set; }        //索引器
        }

    3.接口使用注意事项:

    1.接口可以继承。
    
    2.类要继承接口的所有东西
    
    3.接口不能继承类
    
    4.一个类可以继承多个接口
    
    5.接口的修饰符可以是 newpublicprotectedinternalprivate
    
    6.接口成员前面不允许有修饰符,都默认为公有成员(public7.接口成员可以分为4类:方法、属性、事件、索引器,而不能包含成员变量

    4.实例

       public class Program
        {
            static void Main(string[] args)
            {
                Dog dog = new Dog();    
                dog.Cay();
    
                Cat cat = new Cat();
                cat.Cay();
    
                Pig pig = new Pig();
                pig.Cay();
    
                Console.Read();
            }
        }
        class Dog : Animal                      //定义狗的类
        {
            public void Cay()                   //输出狗叫声的方法
            {
                Console.WriteLine("汪汪汪");
            }
        }
        class Cat : Animal                      //定义猫的类
        {
            public void Cay()                   //输出猫叫声的方法
            {
                Console.WriteLine("喵喵喵");
            }
        } 
        class Pig : Animal                      //定义猪的类
        {
            public void Cay()                   //输出猪叫声的方法
            {
                Console.WriteLine("哼哼哼");
            }
        }
    
        interface Animal    //动物接口
        {
            void Cay();     //叫声的方式 
        }

    输出的结果:

    这样一看,如果想要调用Cay()方法,在Dog,Cat,Pig中直接定义不就好了,何必多次一举?

    那么我们修改一下代码,再定义一个类Class,这个Class作为实现接口传入,这个类不需要继承于接口Animal:

       public class Program
        {
            static void Main(string[] args)
            {
                Class c = new Class();
                Animal animal;
    
                animal = new Dog();
                c.WriteCay(animal);
    
                animal = new Cat();
                c.WriteCay(animal);
    
                animal = new Pig();
                c.WriteCay(animal);
    
                Console.Read();
            }
        }
        class Dog : Animal                      //定义狗的类
        {
            public void Cay()                   //输出狗叫声的方法
            {
                Console.WriteLine("汪汪汪");
            }
        }
        class Cat : Animal                      //定义猫的类
        {
            public void Cay()                   //输出猫叫声的方法
            {
                Console.WriteLine("喵喵喵");
            }
        } 
        class Pig : Animal                      //定义猪的类
        {
            public void Cay()                   //输出猪叫声的方法
            {
                Console.WriteLine("哼哼哼");
            }
        }
        class Class
        {
            public void WriteCay(Animal animal)
            {
                animal.Cay();
                Console.WriteLine("--------------------------");
            }
        }
        interface Animal    //动物接口
        {
            void Cay();     //叫声的方式 
        }

    此时的函数的结果是:

     如果再来一个Monkey,Cattle,Sheep这样的类添加进来,也只需要把他们的相关类加进来,然后在Main()中稍作修改就好,扩充性特别好。

  • 相关阅读:
    找上海或深圳塑胶模具工作
    词典新选择网易推出有道[注意第二幅图中的红框]
    《天气与生活》修正版已发布, 以后将由南海维护
    JQuery发布1.2.3
    网游产业的公关
    使用ExtJS,失去的将比得到的还多
    养成习惯,解放大脑
    Vancl网上购衫体验
    深圳人均GDP过一万美元随想
    DateChooser ASP.NET 2.0版 之实用版
  • 原文地址:https://www.cnblogs.com/swjian/p/7997968.html
Copyright © 2011-2022 走看看