开发者社区> 问答> 正文

为什么Java中不能有静态的构造函数?

我的理解是这样的:Java中,构造函数是用来实例化对象的,实例化时必定有确定的引用变量。但在调用静态函数时编译器还是通过解析原来的类来调用静态方法,不通过对象。因此构造函数不能是静态的。
这种理解正确吗?

展开
收起
蛮大人123 2016-03-09 18:34:19 2887 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    构造函数的意义是什么?
    主要的作用其实就是初始化一些实例属性,现在将构造函数设计成静态的,那么势必会出现静态方法访问实例属性的情况。
    解决方案有两种:
    1.JVM可以为静态构造函数隐式的增加一个对对象的引用,就像内部类有一个隐式的对外部类的引用一样,然后通过这个引用访问对象的实例属性,但是从代码是看不出来的,这样的话就与Java语言的规范出现冲突:静态方法不可访问实例域,所以不可取。
    2.使用像python那种解决方法,构造函数的第一个参数默认就是对对象的引用,如self,然后访问对象的实例域就通过self进行访问,所以为啥不直接使用实例方法呢,多方便

    2019-07-17 18:56:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载