我想强制任何类不能创建一个新的实例,如果它继承了一个特定的基类,那么这个基类应该如何?如何防止继承类实例
回答
以下代码在java中。只是为了举例
基类在构造函数上有一个异常。
public class BaseClass
{
public BaseClass()
{
throw new AssertionError();
}
}
孩子类扩展基类,但如果你创建一个对象它会给你一个例外。
public class MainClass extends BaseClass
{
public MainClass()
{
}
public static void main(String[] args) {
MainClass c = new MainClass();
}
}
这使得无法创建此实例。你会如何使用它? – Euphoric 2011-06-11 10:21:38
这是我寻找的最接近的解决方案,但我建议如果它比抛出异常更关联于设计。 作为更多的解释,我想迫使类看起来像工具类,他们应该是无状态的,他们的所有方法和属性静态,就像数学类,现在我相信我不能强制方法或属性是静态的,但至少我想确保这些类无法实例化。 简而言之,认为Math类和另一个具有相同设计的类,我如何通过继承基类来推动这些类为无状态? – akkad 2011-06-11 10:32:14
你不行。基类不能规定他们的后代不能做什么,他们只能决定他们的后代必须做什么。你可以定义一个非常严格的接口,但是如果你允许继承,那么你不能阻止其他人通过多态添加额外的功能。 – 2011-06-11 11:05:42
你不能指定在基类中,任何派生类都是自我响应的,如果它想呈现从中派生的能力,那么你不能对它做任何事情。
你可以声明基类为const - 其他类不能扩展它。
你不能这样做。请说明你为什么要这样做。
你想密封你的基类。
public sealed class BaseClass
{
public BaseClass(){};
}
public class SubClass : BaseClass
{
public SubClass(){};
}
这将抛出一个编译器错误,因为你不能从密封基地继承。
- 1. 如何防止.htaccess继承?
- 2. 如何防止css继承
- 3. 如何防止继承H1?
- 4. 防止继承
- 5. 防止继承UserControl
- 6. 防止css继承
- 7. 如何使用继承类的实例加载继承对象?
- 8. 防止C++中的类继承
- 9. 如何防止Objective-C中的继承?
- 10. web.config - 如何防止所有继承
- 11. 如何防止DOM子项继承addEventListener?
- 12. 如何防止空白属性继承?
- 13. 如何防止java中的继承链
- 14. 如何防止cq:对话框继承
- 15. 如何防止类的实例繁殖
- 16. 如何防止类“a”被另一个类继承?
- 17. 在MongoMapper中防止继承
- 18. 防止继承从孩子
- 19. 的Django模型继承 - 防止子类的实例出现在超管理
- 20. 如何防止你的类在C++中被继承?
- 21. 如何防止Bootstrap按钮从其他类继承?
- 22. 如何防止在继承类中共享静态变量?
- 23. 继承:将基类实例转换为子类实例
- 24. 如何在继承类中自动声明类实例变量
- 25. C++继承和实例化依赖类
- 26. 出错创建继承类的实例
- 27. 类继承和实例交互
- 28. Js继承了类实例undefined
- 29. NullReferenceException创建继承类的实例
- 30. 无法获得继承类的实例
一个特定的或任何?如果答案是任何你可以使用'sealed'关键字。 – Kevin 2011-06-11 09:53:16
那么从那个基类继承什么呢?举个例子你想做什么 – Eranga 2011-06-11 09:57:16
这是无稽之谈。试着用一个例子来更好地问它。 – 2011-06-11 10:12:09