实现没有“final”关键字的最终类

我的一个朋友在他几天的电话工作面试中被问到了这个问题。 我没有线索。 有谁能提出解决方案? (他的求职面试已经结束了。出于好奇心现在)10倍。

  • 将构造函数标记为私有
  • 在类上提供静态方法以创建类的实例。 这将允许您实例化该类的对象

我不知道他们的意思是最后一堂课的意思。 如果它们意味着一个不能通过inheritance扩展的类,那么除非用final (或者密封,或者语言关键字是什么)标记该类,否则显然不能这样做。

但是如果平均最终为不可变,那么派生类不能修改类中字段的值,那么基类应该具有私有的所有fileds和accessor方法。

创建一个没有参数的私有构造函数?

 public class Base { private Base() { } } public class Derived : Base { //Cannot access private constructor here error } 

将该类的所有构造函数设置为private以停止inheritance,尽管不推荐。

 public class Immutable { private int val; public Immutable(int v) { this.val = v; } public int getVal() { return this.val; } } 

静态类不能inheritance