旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

C#基础知识整顿:基础知识(8) 接口【C#.Net教程】,C#,基础知识整理,接口

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:75评论:0


导读:前面打仗了笼统类,它的特性是子类必需完成abstract润饰的要领。以及另有virtual润饰的要领,virtual润饰的要领子类能够重写也能够不重写而直接运用。然则由于C#也是单...
前面打仗了笼统类,它的特性是子类必需完成abstract润饰的要领。以及另有virtual润饰的要领,virtual润饰的要领子类能够重写也能够不重写而直接运用。然则由于C#也是单继续的,所以定义一个父类,然后继续来扩大一些类的时刻,会碰到不合适的状况。由于我们顺序员是用顺序语言来形貌天下的,所以我们的工程中构造类,定名类,写要领等,最好和实际天下类似,如许开辟起来才不费力,修正bug的时刻就比较轻松。
比方,在一个工程中,用到了许多窗体,有些窗体需要对其封闭事宜重新处置惩罚,有些需要对其转变大小事宜处置惩罚。然则每写一个窗体时都要写一遍封闭事宜或转变大小事宜的要领,老是很烦的。这时候能够用继续吗?

    public class IControlAble1
    {
        public event EventHandler OnCloseEvent;//封闭

        public void Control_Close(object sender, EventArgs e)
        {
            if (OnCloseEvent != null)
            {
                OnCloseEvent(sender, e);
            }
        }
    }

    public class IControlAble2
    {
        public event EventHandler OnSizeChangeEvent;//转变大小

        public void Control_SizeChange(object sender, EventArgs e)
        {
            if (OnSizeChangeEvent != null)
            {
                OnSizeChangeEvent(sender, e);
            }
        }
    }

试想一下,每写一个窗体类,都要继续一次IControlAble1或IControlAble2老是觉得很新鲜的,由于这两个类不是窗体类。这时候有一个东西能够完成,这就是接口。
接口,书上是如许说的,接口是一种行为原则。而且关于接口生活中也很罕见,比方我们常说USB2.0接口,USB2.0就是一种原则,一切生产USB线的厂家并没有直接关系,然则人人都恪守USB2.0这个原则来生产,每根线的衔接处,长宽高是多少,每根数据线怎样排... 都要恪守这个原则。如许人人生产出来的线就可以通用。
关于顺序来讲,就比如差别的类具有雷同的超类,而且都完成了超类的笼统要领。如许一切类都有了某种原则。然则C#中是单继续的,如许完成起来比较难题。因而C#中就有了接口的观点。看看接口的规范情势和特性:

    /// <summary>
    /// 1、接口不允许public,private,interna、protected润饰,由于一切的接口都是公用的;
    /// 2、成员不带代码体;
    /// 3、接口不能定义字段成员;
    /// 4、不能用关键字static,virtual,abstract、sealed润饰
    /// 5、一个类能够完成多个接口
    /// </summary>
    interface  IMyInterfaceAble
    {
        //要领、字段
        int MyValue
        {
            get;

            set;
        }

        void Method1();

        void Method2();
    }

C#中对接口的定名平常是:I***able,I示意接口,Able后缀。所以接口能够看作:有...才能的。
如许能够处理上面的问题了。将两个类修正为接口,然后其他窗体类完成就可以够了。

    interface IControlAble1
    {
        //没有代码体,而且不润饰
         event EventHandler OnCloseEvent;//封闭

         void Control_Close(object sender, EventArgs e);
    }

    interface IControlAble2
    {
         event EventHandler OnSizeChangeEvent;

         void Control_SizeChange(object sender, EventArgs e);
    }

    public class MainForm : IControlAble1,IControlAble2//能够完成多个接口
    {
        /*
         窗体代码
         */
        
        public event EventHandler OnCloseEvent;

        public void Control_Close(object sender, EventArgs e)
        {
            Console.WriteLine("重写封闭事宜。");
        }

        public event EventHandler OnSizeChangeEvent;

        public void Control_SizeChange(object sender, EventArgs e)
        {
            Console.WriteLine("重写大小转变事宜。");
        }
    }

    public class ChildForm1 : IControlAble1
    {
        /*
         * 窗体代码
         */

        public event EventHandler OnCloseEvent;

        public void Control_Close(object sender, EventArgs e)
        {
            Console.WriteLine("重写封闭事宜。");
        }
    }

    public class ChildForm2 : IControlAble2
    {
        /*
         窗体代码
         */
        public event EventHandler OnSizeChangeEvent;

        public void Control_SizeChange(object sender, EventArgs e)
        {
            Console.WriteLine("重写大小转变事宜。");
        }
    }

如许,代码写起来更方便了,而且不会漏写。

以上就是C#基础知识整顿:基础知识(8) 接口的内容,更多相关内容请关注ki4网(www.ki4.cn)!

标签:C#基础知识整理接口


欢迎 发表评论: