• 接口的显式实现(转)


    隐式实现接口

    复制代码
    interface IRunable
        {
            //规范子类必须实现strName属性
            string strName { get; set; }
            //规范子类必须实现Run()方法
            void Run();
    
        }
    
        class Student:IRunable
        {
            //这里是子类的字段
            string strname;
            public string strName
            {
                get
                {
                    return strname;
                }
                set
                {
                    strname = value;
                }
            }
    
            public void Run()
            {
                Console.WriteLine("我是小学生,我在学校里面跑步!");
            }
    
    
        }
    复制代码


    显式实现接口

    复制代码
     class Student:IRunable
        {
            //这里是子类的字段
            string strname;
            //显示实现接口
            string IRunable.strName
            {
                get
                {
                    return strname;
                }
                set
                {
                    strname = value;
                }
            }
    
            void IRunable.Run()
            {
                Console.WriteLine("我是小学生,我在学校里面跑步!");
            }
    
        }
    复制代码


    显示的实现接口是为了解决方法名冲突的问题。但是显示实现接口会出现,在上面的代码中会出现一个问题,如下图:

    为什么会这样呢?

    因为显式实现接口的方法是私有的,不能通过对象变量来调用。那应该怎么调用呢,看下面的代码:

    复制代码
    class Program
        {
            static void Main(string[] args)
            {
               
    
                //里氏替换原则,父类变量指向子类对象,并通过父类变量调用子类方法
                IRunable ir = new Student();
                ir.Run();
                Console.ReadKey();
            }
        }
    
        interface IRunable
        {
            //规范子类必须实现strName属性
            string strName { get; set; }
            //规范子类必须实现Run()方法
            void Run();
    
        }
    
        class Student:IRunable
        {
            //这里是子类的字段
            string strname;
            //显示实现接口
            string IRunable.strName
            {
                get
                {
                    return strname;
                }
                set
                {
                    strname = value;
                }
            }
    
            void IRunable.Run()
            {
                Console.WriteLine("我是小学生,我在学校里面跑步!");
            }
    
           // Student s = new Student();
          
    
        }
    复制代码

    打印结果如下:

    显式实现接口,这个接口的方法,只能通过接口变量来调用。

  • 相关阅读:
    Oozie简介
    ASP.NET Redis 开发
    迁移到 Express 4.x
    vim文本编辑器
    【Shell常用命令二】管道符 通配符
    【Shell常用命令一】echo bash alias history 输出重定向 快捷键
    【linux学习笔记八】常用命令
    【linux学习笔记七】关机重启命令
    【linux学习笔记六】压缩 解压缩命令
    【linux学习笔记五】帮助命令
  • 原文地址:https://www.cnblogs.com/KevinG/p/3553669.html
Copyright © 2020-2023  润新知