zoukankan      html  css  js  c++  java
  • 接口的显式实现(转)

    隐式实现接口

    复制代码
    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();
          
    
        }
    复制代码

    打印结果如下:

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

  • 相关阅读:
    WordPress在nginx服务器伪静态
    excel根据一列的值匹配另一列
    linux上安装Anaconda并创建python虚拟环境
    python模块学习之numpy
    大数据测试工具
    python学习路线
    spark event log
    夏令时
    spark学习指南
    Yarn和Spark对比
  • 原文地址:https://www.cnblogs.com/KevinG/p/3553669.html
Copyright © 2011-2022 走看看