C# 语法练习(15): 接口


接口只声明、无实现、不能实例化;
接口可包含方法、属性、事件、索引器, 但无字段;
接口成员都是隐式的 public, 不要使用访问修饰符;

类、结构和接口都可以继承多个接口;
继承接口的类必须实现接口成员, 除非是抽象类;
类实现的接口成员须是公共的、非静态的.

入门示例:

using System;



interface MyInterface

{

    int Sqr(int x);

}



class MyClass : MyInterface

{

    public int Sqr(int x) { return x * x; }

}





class Program

{

    static void Main()

    {

        MyClass obj = new MyClass();

        Console.WriteLine(obj.Sqr(3)); // 9



        MyInterface intf = new MyClass();

        Console.WriteLine(intf.Sqr(3));



        Console.ReadKey();

    }

}


 
   

一个接口得到不同的实现:

using System;



interface MyInterface

{

    int Method(int x, int y);

}



class MyClass1 : MyInterface

{

    public int Method(int x, int y) { return x + y; }

}



class MyClass2 : MyInterface

{

    public int Method(int x, int y) { return x - y; }

}





class Program

{

    static void Main()

    {

        MyInterface intf1 = new MyClass1();

        MyInterface intf2 = new MyClass2();



        Console.WriteLine(intf1.Method(3, 2)); // 5

        Console.WriteLine(intf2.Method(3, 2)); // 1



        Console.ReadKey();

    }

}


 
   

显示实现接口(接口名.方法):

using System;



interface MyInterface1

{

    void Method();

}



interface MyInterface2

{

    void Method();

}





class MyClass : MyInterface1, MyInterface2

{

    /* 显示实现接口不需要访问修饰符; 但显示实现的方法只能通过接口访问 */

    void MyInterface1.Method() { Console.WriteLine("MyInterface1_Method"); }

    void MyInterface2.Method() { Console.WriteLine("MyInterface2_Method"); }

}





class Program

{

    static void Main()

    {

        MyInterface1 intf1 = new MyClass();

        MyInterface2 intf2 = new MyClass();



        intf1.Method(); // MyInterface1_Method

        intf2.Method(); // MyInterface2_Method



        Console.ReadKey();

    }

}


 
   

你可能感兴趣的:(C#)