zoukankan      html  css  js  c++  java
  • 关于接口的实现和继承的问题 拓荒者

         以前有个朋友提出这样一个问题:有一个接口Interface1定义如下:

        interface Interface1
        {
            void HelloWorld();
        }

         用一个类去实现这个接口:

        public class class1 : Interface1
        {
            public void HelloWorld()
            {
                System.Windows.Forms.MessageBox.Show("Hello World!");
            }
        }

         现在,class1实现了接口Interface1,当类class1的一个子类class2继承class1时,子类class2自然就可以访问HelloWorld()方法了。问题就出在这里,其实我们不希望子类class2去继承类class1中实现接口的部分。这该怎么办呢?

         当时我们都没能够给出回答,我自己还认为这个问题是不可能实现的。现在看来我又错了。今天在QQ群中,有一个朋友再次提出了这个问题,并且提供了一些方法。我根据他的提示,很轻松的就解决了这个问题。其实答案很简单,只需要在类class1中显示的实现接口就可以了。具体定义如下:

        class class1 : Interface1
        {
            void Interface1.HelloWorld()
            {
                System.Windows.Forms.MessageBox.Show("Hello World!");
            }
        }

         这样定义以后,方法HelloWorld就不再是一个public的方法了。甚至他的属性比私有更严格,连class1本身都不能够进行访问。如果需要对方法HelloWorld进行访问,需要定义一个Interface1的引用,使它指向class1的实例。通过这个引用就可以访问了。

         另外通过这种方法来实现的时候,class1的子类也都拥有了这个方法,只是不能被访问,如果使Interface1的引用指向class1 的子类的引用也同样可以访问该方法。

    2021年9月 北京、西安两地,高薪诚聘 .NET工程师,请私信联系!
    如果认为此文对您有帮助,别忘了支持一下哦!
    声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。转载时请在文章页面明显位置给出原文链接。
  • 相关阅读:
    测试策略(1)
    css在网页中的一些重要运用
    拖拽禁止点击事件
    js入门的心结
    响应式布局
    web中的兼容性
    css中的bfc和ifc
    css格式化的基本运用
    css基础知识
    html中输入控件的元素
  • 原文地址:https://www.cnblogs.com/youring2/p/1365287.html
Copyright © 2011-2022 走看看