// interface
public interface IHasLegs { ... }
// base class
public class Animal { ... }
// derived classes of Animal
public class Donkey : Animal, IHasLegs { ... } // with legs
public class Lizard : Animal, IHasLegs { ... } // with legs
public class Snake : Animal { ... } // without legs
// other class with legs
public class Table : IHasLegs { ... }
public class CageWithAnimalsWithLegs {
public List<??> animalsWithLegs { get; set; }
}
我应该在里面放什么??强制从两者继承的对象Animal
和IHasLegs
?我不想Snake
在那个笼子里看到 a 也不想看到 a Table
。
- - - - - - - 编辑 - - - - - - -
谢谢大家的回答,但事情是这样的:我真正想做的是:
public interface IClonable { ... }
public class MyTextBox : TextBox, IClonable { ... }
public class MyComboBox : ComboBox, IClonable { ... }
TextBox/ComboBox 当然是一个控件。现在,如果我创建一个继承 Control 和 IClonable 的抽象类,我将失去我需要的 TextBox/ComboBox 继承。不允许多类继承,所以我必须使用接口。现在我又想起来了,我可以创建另一个继承自 IClonable 的接口:
public interface IClonableControl : IClonable { ... }
public class MyTextBox : TextBox, IClonableControl { ... }
public class MyComboBox : ComboBox, IClonableControl { ... }
进而
List<IClonableControl> clonableControls;
谢谢!!