interface-C#接口-统一的标准

  • 博主写作不容易,孩子需要您鼓励
  • 万水千山总是情 , 先点个赞行不行

接口是面向对象编程的一个重要技术,在C#中负责实现多重继承。一个接口定义一个协定,实现接口类或结构体必须遵守其协定。比如耳机接口,比如显示器接口。

接口的定义

接口用来描述一种程序的规定,可以 属于任何类或者结构体的一组相关行为。接口可由方法、属性、事件、索引器或这4种成员类型任何组合构成。接口不能包含常数、字段、运算符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员。接口成员一定是公共的。

  • 定义接口的语法格式如下:
  • <访问修饰符> interface 接口名
        {
                //接口主体
        }
    

    接口不能包含其所定义的成员的任何实现语句,接口只指定实现该接口的类或必须提供的成员。

    接口的实现

    定义了接口后,就要在类或结构中实现。C#中通常把派生类和基类的关系称为继承,类和接口的关系称为实现。实现接口的语法和继承类一样,都有“:”,接口中的方法在类中实现时不是重载,不需要使用override关键字。
    接口中不能定义构造函数,所以接口不能实例化。

    实例1

    声明接口IPoint描述一个点的坐标并实现该接口。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Point p = new Point(5, 10);
                Console.WriteLine("创建的新点坐标为:");
                Console.WriteLine("X={0},Y={1}", p.x, p.y);
                Console.ReadKey();
            }
        }
        interface IPoint               //定义Point接口类
        {                                
            int x { get; set; }
            int y { get; set; }
        }
        public class Point : IPoint
        {
            private int px;
            private int py;
    
            public Point(int x,int y)
            {
                px = x;
                py = y;
            }
    
            //接口属性实现
            public int x
            {
                get { return px; }
                set { px = value; }
            }
            public int y
            {
                get { return py; }
                set { py = value; }
            }
        }
    }
    

    运行结果:
    在这里插入图片描述
    对接口的名称建议以I开头,如IPoint,对接口的访问修饰符可以选择使用,但是接口的方法前面不能添加任何访问修饰符,他是隐式公开的;接口不能包含构造函数,接口不能实现任何方法、属性和索引器。

    实例2

    定义一个接口,接口包含方法,并使用一个类实现接口。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person person1 = new Person("小明", 18, "男");//利用有参构造函数创建对象
                person1.DisPlay();                              //调用DisPlay方法显示信息
                person1.DoWork();
                person1.DoSport();
                Console.ReadKey();
            }
        }
        interface IPerson               //定义Point接口类
        {
            void DoWork();             //声明方法
            void DoSport();
        }
        public class Person:IPerson
        {
            private String _id;         //身份证号码字段id
            public string ID            //身份证号码属性id
            {
                get { return this._id; }
                set { this._id = value; }
            }
    
            private String _name;       //姓名字段
            public string Name          //姓名属性
            {
                get { return this._name; }
                set { this._name = value; }
            }
    
            private int _age;           //年龄字段
            public int Age              //年龄属性
            {
                get { return this._age; }
                set { this._age = value; }
            }
    
            private String _gender;       //性别字段
            public string Gender          //性别属性
            {
                get { return this._gender; }
                set { this._gender = value; }
            }
    
            public Person()                 //无参构造函数
            { }
            public Person(string name, int age, string gender)    //有参构造函数
            {
                this._name = name;
                this._age = age;
                this._gender = gender;
            }
            public void DoWork()
            {
                Console.WriteLine("{0}的任务是工作", this._name);
            }
            public void DoSport()
            {
                Console.WriteLine("{0}喜欢做运动", this._name);
            }
            public void DisPlay()           //基类共用方法,显示人的信息
            {
                Console.WriteLine("{0}是{1}性,年龄为{2}岁", this._name, this._gender, this._age);
            }
        }
    }
    

    运行结果:
    在这里插入图片描述

    接口的继承

    C#中的派生类只能有一个基类,不支持类的多重继承,但可以继承多个接口,通过接口实现多继承。如在现实中儿子不但可以继承父母的财产,如伯父我儿女,也可以继承伯父的财产,在C#中这属于多重继承,要用接口来实现,其实接口就是为了实现多重继承而产生的。在C#中接口可以多继承,接口之间可以相互继承,普通类和抽象类可以继承自接口。一个类可以同时继承一个类和多个接口,但是接口不能继承类。

    ------------------------------------------------------------------------------------------
                                                  分割线
    ------------------------------------------------------------------------------------------
    
    • 博主简介:
    • 工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱:2296776525@qq.com
    • 帮忙点个赞吧。哈哈。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值