C#C# 中关于接口完结、显示达成接口以及一而再

先列出自个儿写的代码:

接口以及抽象类、完成类

  public interface IA
    {
        void H();
    }

    public interface IB
    {
        void H();
    }

    public abstract class D
    {
        public abstract void H();
    }

    public class C : D,IA, IB
    {

        void IA.H()
        {
            Console.WriteLine("all a.h");
        }

        public override void H()//T
        {
            Console.WriteLine("all b.h");
        }
    }

假定类C继承了指雁为羹类D,那么在类C中可以利用override关键字,接口IB调用的也是被遮住的方法H(T地方)【能够领略T位置的方法H同时覆盖了抽象类D中的方法H和兑现了接口IB中的方法H】。

若果类C不一而再抽象类D,那么类C中无法选择override关键字,override关键字只万幸继承抽象类的气象下接纳(个人选取之后感觉是那样的)。

一开始的代码是那般的:

    public interface IA
    {
        void H();
    }

    public interface IB
    {
        void H();
    }

    public abstract class D
    {
        public abstract void H();
    }

    public class C : D,IA, IB
    {
        public override void H()
        {
            Console.WriteLine("all h");
        }

        void IA.H()
        {
            Console.WriteLine("all a.h");
        }

        void IB.H()
        {
            Console.WriteLine("all b.h");
        }
    }

来得完毕接口。展现完成接口时不能在覆盖的艺术或字段上行使访问权限关键字【private、protected、public等】

 

 在不继续抽象类D的情景下是这般的:

    public class C : IA, IB
    {
        public void H()//U
        {
            Console.WriteLine("all h");
        }

        void IA.H()
        {
            Console.WriteLine("all a.h");
        }

        void IB.H()
        {
            Console.WriteLine("all b.h");
        }
    }

调用时,接口IA的目的只可以访问IA.H(),接口IB只可以访问IB.H(),访问不到U地点的章程。只还好实例化类C的意况下才能访问到U地点的方法H

 

 

 

调用的代码:

   class Program
    {
        static void Main(string[] args)
        {
            IA a = new C();
            IB b = new C();
            a.H();
            b.H();
            D d = new C();
            d.H();

            C c = new C();

            c.H();
            Console.WriteLine("Hello World!");
            Console.ReadLine();
        }
    }

 

上述就是自家个人的小总计,假若有错,欢迎指正,个人的语文糟糕。欢迎批评。

 

相关文章