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