c# – 继承一个接口,实现部分方法,让派生类实现其余的
定义以下C#界面:
public interface IShape { int NumberOfLineSegments {get;} int Area {get;} } 接下来,我想定义几个矩形类:梯形,正方形等.所有这些类在Area()属性中都有区别,但NumberOfLineSegments()总是返回4.因此,我想要一个名为Rectangle(或IRectangle)的“临时”类或接口,如下所示: public Rectangle : IShape { public int NumberOfLineSegments{get{return 4;}} } 我想要Rectangle只实现NumberOfLineSegment(),并将其留给其派生类来实现其余的: public Square : Rectangle { public int Area() {get{return length*height;} } 然而,由于IShape是一个接口,Rectangle类还必须实现Area(),它不知道如何实现.. 有没有办法规避这个?我通过C#和StackOverflow广泛阅读了Richter的clr.提前致谢! 解决方法
有两个选择.
>使实现虚拟和空(或抛出一个NotImplementedException),因此默认情况下不执行任何操作,直到派生. 第2号是更为可取的,因为它会强制派生类来实现该方法,而在第1个派生类中不会强制覆盖基本的虚拟方法. 抽象方法可以成功地满足接口定义,因为编译器将知道抽象类本身不能被实例化,并且任何派生类被强制实现抽象方法. 也就是说,如果有一些界面成员对特定类型没有意义,那通常是分解你的界面的一个指标: public interface IShape : ICalculateArea,IHaveLineSegments { } public interface ICalculateArea { float Area { get; } } public interface IHaveLineSegments { int NumberOfLineSegments { get; } } class Rectangle : IHaveLineSegments { public int NumberOfLineSegments { get; private set; } } class Square : Rectangle,IShape { public float Area { get; private set; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |