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

时间:2011-03-23 09:25:24

标签: java

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

7 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:0)

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

但是如果意思是 final ,就像在immutable中那样派生类不能修改类中字段的值,那么基类应该具有所有的filed和accessor方法私有的。

答案 2 :(得分:0)

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

public class Base
{
    private Base()
    {
    }
}

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

答案 3 :(得分:0)

将该类的所有构造函数设置为private以停止继承,但不建议使用。

答案 4 :(得分:0)

public class Immutable {       
    private int val;

    public Immutable(int v)
    { 
        this.val = v;
    }

    public int getVal() { return this.val; }
}

答案 5 :(得分:0)

您可以使类不可变,而无需将final关键字用作:

  1. 将实例变量设为私有。
  2. 将构造函数设为私有。
  3. 创建一个工厂方法,该方法将返回此类的实例。

我在这里用Java提供了不可变的类。

class Immutable {
    private int i;
    private Immutable(int i){
     this.i = i;
    }
    public static Immutable createInstance(int i){
         return new Immutable(i);
    }
    public int getI(){return i;}
}
 class Main {
    public static void main(string args[]){
       Immutable obj = Immutable.createInstance(5);
    }
}

答案 6 :(得分:-1)

无法从

继承静态类