象其他的类型一样,泛型也可以定义基类和接口。
注意:当子类实现泛型基类时候,需要指定到底是什么类型。当子类实现泛型基类的abstract或者virtual的方法时候,也要指定类型。
例如:
// A generic class with a virtual method.
public class MyList<T>
{
private List<T> listOfData = new List<T>();
public virtual void PrintList(T data) { }
}
public class MyStringList : MyList<string>
{
// Must substitute the type parameter used in the
// parent class in derived methods.
public override void PrintList(string data) { }
}
当子类也是泛型类的时候,需要保持基类对T的限制。
泛型做接口的用法主要是为不同类型实现一组相同的逻辑。
如定义具有 加剪乘除 方法的接口,可以为实现为float类型,可以实现为int类型等等