我正在使用 .Net 并且有一个简单的主类和子类设计。我的主类包含几乎所有的功能,而子类只需要从主类中设置一个值。我正在考虑将 master 设为一个抽象类,但没有必须重写的方法,但我想强调 master 类不一定独立存在的想法。另外,我想强调的是,主类的属性必须由子类设置。这里有什么合适的?谢谢你的帮助!
问问题
228 次
6 回答
2
如果没有人应该创建主类的实例,那么创建它绝对是合适的abstract
。
至于属性,使其成为抽象属性。在 master 中,编写如下内容:
public abstract int MyProperty { get; }
然后子类必须覆盖它。
于 2011-03-11T23:07:49.253 回答
1
如果大师班确实不能有具体的实例,那么将其抽象是绝对可以的,而且确实是正确的。
于 2011-03-11T23:05:47.507 回答
1
抽象类是合适的。你可以让它有一个受保护的构造函数来获取你关心的属性,这样子类就必须提供它
于 2011-03-11T23:06:59.477 回答
1
将主类抽象化应该没问题——毕竟你永远不希望它在没有被继承的情况下被使用。
您还可以将属性声明为抽象的,以便必须在子类中覆盖它:
public abstract string MyProperty { get; set; }
于 2011-03-11T23:08:35.657 回答
1
我的主类包含几乎所有的功能,而子类只需要从主类中设置一个值。
这听起来更像是你应该在你的主类中公开一个静态工厂方法,它接受这个值并返回一个主类的实例。将主类的构造函数设为私有,这样只有您的静态工厂方法才能创建主类的实例。
像这样的东西:
public class MasterClass
{
public string MyValue { get; set; }
private MasterClass()
{
}
public static MasterClass CreateMaster(string val)
{
MasterClass mc = new MasterClass() { MyValue = val };
return mc;
}
}
于 2011-03-11T23:08:43.767 回答
0
如果除了设置一些已经在“主”中的特定状态之外没有什么可扩展的,那么听起来您根本不需要继承,也许需要控制“主”类的实例是如何构造的。
您可以改为使用工厂模式。
但是,如果您正在改变行为,那么绝对abstract
有必要使用!
于 2011-03-11T23:07:50.040 回答