zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/del/p/1367621.html
Copyright © 2011-2022 走看看