1.为什么说
 "EditBox中的Paint方法来自IControl接口"
如果我也可以说是为了重载Control中的方法paint(),因而paint来自Control阿
而把声明
 "public class EditBox:Control,IControl,IDataBound"
改为
  public class EditBox:Control,IDataBoundEditBox的paint()最终是在IControl中定义的。所以说"EditBox中的Paint方法来自IControl接口"可以这么写,但实际上还是从IControl中实现而来的。

解决方案 »

  1.   

    2.是否可以将
      "public void Paint(){//实现...}"
    改为
      private void Paint(){//实现...}不可以。
      

  2.   

    类中实现接口成员的时候通常将成员声明声明为public,当然也可以选择不作为公有成员实现接口以上是书上写的
      

  3.   

    同意wkoe7810,接口是为了被其他类访问的,虽然可以改为私有,这也不会产生编译出错,但是接口的意义已经不存在的,所以公司规范中一般不会这样写,被上面的人知道了一定会被骂的,因为可读性就差了。以上是我个人的看法。
      

  4.   

    同样谢谢 maten(邪魔道)  的回答
    关于2,我首先问的可不可以,
    如果说可以的话,
    以问题为例
    我可以说我将Paint()声明为private不是为了给别人调用,而是为了
    让我的派生类来使用的(比如说派生来在其中一个public成员中使用到了Paint()),我觉得
    能说的过去亚
      

  5.   

    我不是钻牛角尖,只是我是想搞清楚一些细节,既然学了.
    另外,问个问题
    在C#中类的修饰符可以是public等
    那么
    1.默认情况下

    class
    {
      void F(){...}
    }
    是否为public类型2.在谈到类的继承时,什么情况下该类不允许被继承
    如该类本身为private或internal等谢谢
      

  6.   

    1.省缺时是internal2.sealed class MyClass{}
    不能被继承
      

  7.   

    省缺时是private
    (差点跟java 搞混了:-))
      

  8.   

    同样谢谢 csharpguy(csharpguy)
    刚才看书的时候又遇到一个问题,
    关于接口的实现和重实现有什么区别啊
      

  9.   

    对不起,我一直都在国外念书,没在国内念过计算机,所以对一些名词对不上号什么叫重实现?关于interface 的实现,我觉得算是.net 的精髓所在,因为MS 最初开始构想.net 时,其实是为了简化COM 的开发,到后来才逐步完善构想得到.net 这么一个庞大的framework,远远超出的原意
    而COM的精髓就是在于interface我想推荐一本好书(比较新,上个月才出版)《programming .net components》by Juval Lowy, O'reilly 出版
    里面就很详细的讲了 object oriented programming 和 component oriented programming 的分别(就是关于interface的)
    (书作者被Microsoft 授予 software legend 的称号)