相关疑难解决方法(0)

私人建设者和最终

为什么将一个只有私有构造函数的类标记为final是一个好习惯?我的猜测是,让其他程序员知道它不能被分类.

java

12
推荐指数
2
解决办法
7815
查看次数

Java - 私有构造函数vs final和更多

假设有一个类,其所有构造函数都声明为private.

例如.:

public class This {
    private This () { }

    public someMethod( ){
    // something here
    }
   // some more-- no other constructors
}
Run Code Online (Sandbox Code Playgroud)

据我所知,将所有构造函数设为私有类似于将"This"类声明为final - 这样它就无法扩展.

但是,我得到的Eclipse消息给我的印象是这是可能的 - 一个全构造函数 - 私有类可以扩展.看看这个:

当我尝试用类似的东西扩展这个类

public class That extends This {
    ...
}
Run Code Online (Sandbox Code Playgroud)

Eclipse给出了一个错误:" 隐式超级构造函数This()对默认构造函数不可见.必须定义一个显式构造函数. "

当我定义自己的构造函数时:

public class That extends This {
    That () {..} 
    ...
}
Run Code Online (Sandbox Code Playgroud)

这次我得到:" 隐式超级构造函数This()对于默认构造函数是不可见的.必须显式调用另一个构造函数. "

有没有办法绕过这个 - 扩展一个所有构造函数都是私有的类?

如果有,怎么样?

如果不是,那么阻止一个类被i扩展的区别是什么?)使它的构造函数变为私有,以及ii.将它定义为final

注意:我看到Java中的构造函数可以是私有的吗?在其他一些讨论中.

java eclipse constructor extending

6
推荐指数
2
解决办法
6597
查看次数

标签 统计

java ×2

constructor ×1

eclipse ×1

extending ×1