实现没有“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