C# 接口使用方法

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.接口成员前面不允许有修饰符,都默认为公有成员(public

7.接口成员可以分为4类:方法、属性、事件、索引器,而不能包含成员变量

复制代码

4.实例

复制代码
   public class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();    
            dog.Cay();
        Cat cat </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Cat();
        cat.Cay();

        Pig pig </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Pig();
        pig.Cay();

        Console.Read();
    }
}
</span><span style="color: rgba(0, 0, 255, 1)">class</span> Dog : Animal                      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">定义狗的类</span>

{
public void Cay() //输出狗叫声的方法
{
Console.WriteLine(
"汪汪汪");
}
}
class Cat : Animal //定义猫的类
{
public void Cay() //输出猫叫声的方法
{
Console.WriteLine(
"喵喵喵");
}
}
class Pig : Animal //定义猪的类
{
public void Cay() //输出猪叫声的方法
{
Console.WriteLine(
"哼哼哼");
}
}

</span><span style="color: rgba(0, 0, 255, 1)">interface</span> Animal    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">动物接口</span>

{
void Cay(); //叫声的方式
}

复制代码

输出的结果:

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

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

复制代码
   public class Program
    {
        static void Main(string[] args)
        {
            Class c = new Class();
            Animal animal;
        animal </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Dog();
        c.WriteCay(animal);

        animal </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Cat();
        c.WriteCay(animal);

        animal </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Pig();
        c.WriteCay(animal);

        Console.Read();
    }
}
</span><span style="color: rgba(0, 0, 255, 1)">class</span> Dog : Animal                      <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">定义狗的类</span>

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

 

posted @ 2022-04-26 15:28  mkmkbj  阅读(2114)  评论(0编辑  收藏  举报