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()中稍作修改就好,扩充性特别好。

  • 相关阅读:
    LeetCode 1122. Relative Sort Array (数组的相对排序)
    LeetCode 46. Permutations (全排列)
    LeetCode 47. Permutations II (全排列 II)
    LeetCode 77. Combinations (组合)
    LeetCode 1005. Maximize Sum Of Array After K Negations (K 次取反后最大化的数组和)
    LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)
    LeetCode 1219. Path with Maximum Gold (黄金矿工)
    LeetCode 1029. Two City Scheduling (两地调度)
    LeetCode 392. Is Subsequence (判断子序列)
    写程序判断系统是大端序还是小端序
  • 原文地址:https://www.cnblogs.com/swjian/p/7997968.html
Copyright © 2011-2022 走看看