0
点赞
收藏
分享

微信扫一扫

构造函数和继承


构造函数和继承

左直拳

 

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

public class Class1<T,S>

{

public
}





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

{

}

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

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

publicclass Class1<T,S>

{

public Class1(T t,S s){}

public
}

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

  

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

{

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

}

两种方法都可以。

 

举报

相关推荐

0 条评论