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

    以上就是我个人的小总结,如果有错,欢迎指正,个人的语文不好。欢迎批评。

  • 相关阅读:
    RadRails插件在MyEclipse的安装
    如何取消电脑的自动播放功能
    程序员怎么提高自己的技术书籍
    PHP网站,两个域名在一个空间,如何做301转向
    下载和安装Tcl/Tk:
    Hibernate 3.0配置Proxool 0.8.3数据库连接池
    CSS滤镜属性详解
    使用InstantRails搭建Ruby On Rails开发环境
    hibernate 二级缓存配置
    Ruby on rails开发从头来(windows)(二)创建项目和第一个Hello world
  • 原文地址:https://www.cnblogs.com/dawenyang/p/7126987.html
Copyright © 2011-2022 走看看