我想强制任何类不能创建一个新的实例,如果它继承了一个特定的基类,那么这个基类应该如何?如何防止继承类实例
回答
以下代码在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. 如何防止css继承
- 2. 如何防止.htaccess继承?
- 3. 如何防止继承H1?
- 4. 防止继承UserControl
- 5. 防止C++中的类继承
- 6. 如何防止空白属性继承?
- 7. 如何防止java中的继承链
- 8. web.config - 如何防止所有继承
- 9. 如何防止此类实例化?
- 10. 如何防止类“a”被另一个类继承?
- 11. 如何防止Bootstrap按钮从其他类继承?
- 12. 如何防止在继承类中共享静态变量?
- 13. C++继承和实例化依赖类
- 14. 类继承和实例交互
- 15. Js继承了类实例undefined
- 16. 继承基类的一个实例
- 17. 防止其他类的类实例化
- 18. 继承 - 实例化问题
- 19. JavaScript继承实例属性?
- 20. 防止继承者类重写基类的虚函数
- 21. 如何创建一个HttpPostedFileBase实例(或其继承类型)
- 22. 我如何实例化这个继承类
- 23. 如何清理和取消从defaultdict继承的类的实例?
- 24. 如何查找继承给定接口的类实例?
- 25. 如何实现Dispose在继承类
- 26. 防止css和js继承ascx
- 27. C++多重继承防止钻石
- 28. c#防止方法的继承
- 29. 防止WPF控件继承windowstyle
- 30. 防止抽象类实例化
一个特定的或任何?如果答案是任何你可以使用'sealed'关键字。 – Kevin 2011-06-11 09:53:16
那么从那个基类继承什么呢?举个例子你想做什么 – Eranga 2011-06-11 09:57:16
这是无稽之谈。试着用一个例子来更好地问它。 – 2011-06-11 10:12:09