除了将其声明为final或者将其构造函数声明为private之外,还有其他方法可以阻止类的继承吗?
一条评论
//Do not inherit please
还有两个选择:
使每个方法最终,所以人们不能覆盖它们.您可以避免以这种方式从子类中意外调用方法.但这并不会阻止子类化.
把检查放入类的构造函数中:
if (this.getClass() != MyClass.class) { throw new RuntimeException("Subclasses not allowed"); }
然后没人能够实例化你的类的子类.
(不是我建议使用这些技术,它只是出现在我的脑海里.我将使用final类和/或私有构造函数)
最终创建是为了解决这个问题.
使用final
使用私有构造函数
使用评论:
// do not inherit
使用javadoc评论
使每个方法都是最终的,因此人们无法覆盖它们
在类构造函数中使用运行时检查:
if (this.getClass() != MyClass.class) { throw new RuntimeException("Subclasses not allowed"); }