学习C#对接口问题的两个疑惑

学习C#对接口问题的一个疑惑
 interface IControl
    {
        void Print();

    }
    interface ITextBox : IControl
    {
        void SetText(string text);
    }
    interface IListBox : IControl
    {
    void SetItem(string[],items);
    }
    interface IComboBox:ITextBox,IListBox
    {;}
这个例子中,接口ITextBox和IListBox都从接口IControl中继承,也就继承了就口的Print方法,接口IComboBox从
接口ITextBox和IListBox 继承,因此,它也继承了ITextBox的方法SetText 和接口IListBox的方法SetItem 当然还有IControl的方法Print
接口继承和类继承不同,类继承不仅使说明继承,而且也是实现继承,而接口继承只是说明继承,也就是派生类的接口只是父接口的方法说明
,而没有继承父接口的实现。
这句话在此处如何理解?是否意味着虽然接口IComboBox继承了ITextBox的方法SetText 和接口IListBox的方法SetItem,但是 当它使用时必须

重新定义
写出接口的函数型方法的数据结构吗?

答案---------->>
接口继承只是对接口中的方法定义继承,在接口中方法只能进行定义不能进行实现,具体的实现则要在继承接口的类中写,而类不同,子类继承了

父类方法的定义和方法的实现
方法的实现==函数、方法、过程的调用?
是的.要在实现接口的类中去实现接口的方法
如果楼主把上面的代码在VS.net里打一遍就会明白.
如果一个类去实现IComboBox接口的话.
IDE会自动生成一些要你实现的接口的元素.
你就明白啦.
2:学习C#遇到的接口的继承机制的问题
学习C#遇到的接口的继承机制的问题
如果不显式的重现实现接口,派生类就无法改变从基类中继承的接口映射
    interface IControl
    {
        void Paint();
    }
     calss Control : IControl
    {
        public void Paint(){.....}
    }
    class TextBox : Control
    {
    new publict void Paint(){.....}
    }
Control c=new Control();
TextBox t=new TextBox();
IControl ic=c;
IControl it=t;
c.Paint();      //invokes Control.Paint()
t.Paint();      //invokes TextBox.Paint()
ic.Paint();     //invokes Control.Paint()
it.Paint();     //invokes Control.Paint()
在这个程序中,类TextBox 的方法掩盖了 Control的方法,但是没有改变Control.Paint对IControl.Paint的映射 为什么会出现这样调动结果


我的问题如下:
1:Control c=new Control();TextBox t=new TextBox(); 是两个实例化的类对象IControl ic=c;IControl it=t; 这两个语句什么意思?ic、

it
是两个接口类型的对象 为什么可以可以被赋值类对象?
2:既然类TextBox 的方法掩盖了 Control的方法 那么执行it.Paint() 为什么还会调动 //invokes

Control.Paint()我认为应该是://invokes TextBox.Paint()?

答案------->>>>
1:基类指针可以指向派生类. 反过来则不行!
比如:有雇员接口. 经理类和普通职员类都继承雇员接口.
任何经理和普通职员都是公司的雇员. 反过来则不行.
2:TextBox类继承了Control类,覆盖了Control类的paint()方法.
这只是当调用TextBox类的paint()方法时,首先执行程序会从父类找,因为Control类的paint()方法被覆盖了,所以找不到.因为没有从父类获得

相关的方法,程序会继续向下找.
直到找到方法.
如果直接调用接口对象,因为接口里只是声明方法,并没有逻辑实现.所以继续向该类的子类找,在Control类能找到该方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值