我们都知道构造函数不能被重写。那么当我们将一个构造函数声明为final时,为什么会出现编译时错误呢?As final关键字也允许构造函数不被重写。
发布于 2016-03-14 19:33:24
只允许public、private、protected作为修饰符。根据JLS,不允许使用final。java中的final用于限制扩展。
在java中,constructors不能被覆盖。超类的构造函数总是从基类的任何构造函数(隐式或显式)调用。final用于防止任何方法被重写,构造函数与普通方法不同,也不能为overridden。将constructors设置为final没有任何意义。这样做不会被定义为任何功能。
如果你想阻止它的扩展,你可以将这个类设置为final。如果您希望限制类的构造函数,只需将其设置为私有即可。
发布于 2016-03-14 19:41:06
不能将任何Constructors声明为final。当应用于方法时,编译器总是会给出"modifer final not allowed“类型的错误,这意味着该方法不能在子类中被重写。构造函数不是普通的方法。(不同的规则适用)另外,构造函数永远不会被继承。因此,宣布它为最终版本是没有意义的。
https://stackoverflow.com/questions/35985942
复制相似问题