【发布时间】:2017-04-18 00:52:36
【问题描述】:
假设我有一个抽象超类A,它被定义为:
public abstract class A {
protected string a1;
protected int a2;
protected char a3;
public A(string a1, int a2, char a3) {
this.a1 = a1;
this.a2 = a2;
this.a3 = a3;
}
}
然后我有 x 个从 A 继承的类——每个都使用相同的构造函数——但每个都有自己的方法,它们以自己独特的方式使用 a1、a2 和 a3。尽管构造函数是相同的,但据我了解,我必须重新定义每个子类中参数的数量和类型,如下所示:
public sub(string a1, int a2, char a3) : base(a1, a2, a3) {}
如果我需要更改参数的类型,这可能会很痛苦,因为我需要调整所有 11 个类。如果我使用良好的继承实践,在大多数情况下,如果我修改A 的构造函数的参数,所有类都会受到影响,但在某些情况下,情况并非如此。例如,如果我将参数类型从Vehicle 更改为Car。 Car 是 Vehicle 的子类,因此它具有 Vehicle 的所有 API 成员,除了它们的构造函数之外,没有任何类需要更改。
有没有办法按照以下方式做一些事情:
public sub {
public sub(...) : base(...) {}
}
这样当参数类型发生变化时,就不需要更改所有 10 个子类构造函数定义了吗?
【问题讨论】:
标签: c# class oop inheritance