构造函数和继承

构造函数和继承

左直拳

 

有同事用到了泛型,却编译通不过:

    public class Class1<T,S>

    {

        public Class1(T t,S s){}

    }

 

    public class Class2<T, S> : Class1<T, S>

    {

}

以为是泛型的原因。问到我,我也是支支吾吾,闪烁其词,一会儿说继承的基类不用再写泛型变量,一会儿又说可能是构造函数用了泛型。试了一下,才知道根本不关泛型的事,是构造函数的原因。

因为基类Class1只有一个构造函数,并且这个构造函数带了两个参数,造成继承出了问题。估计是继承时默认调用基类没有参数的构造函数。因此,在基类里加一个无参数的构造函数,编译通过:

public class Class1<T,S>

{

public Class1(T t,S s){}

        public Class1(){}

    }

也可以在子类Class2中创建一个带参数的构造函数,并调用基类初始化。

    public class Class2<T, S> : Class1<T, S>

    {

        public Class2(T t, S s) : base(t, s) {}

 }

两种方法都可以。

 

 
原文地址:https://www.cnblogs.com/leftfist/p/4258286.html