Chi*_*hah 10 java oop constructor
我的问题是
A a=new A();
Run Code Online (Sandbox Code Playgroud)
这是首先创建的对象,然后调用构造函数方法?或者创建对象是因为调用了构造函数方法?
如果对象需要调用构造函数,这意味着应该在调用构造函数之前创建对象,如果我将构造函数声明为私有(只是为了查看它是否在没有构造函数的情况下工作),那么我会收到错误.
现在,如果构造函数执行创建了对象,我无法理解逻辑上的工作原理,我的意思是没有对象,对象的方法如何才能执行?
有人可以解释一下吗?
ast*_*eri 12
在调用构造函数之前,为对象分配内存,是.
您可以通过以下步骤来考虑它:
Object的构造函数,例如,首先执行构造函数,然后执行其他任何超类,然后执行实际的类).实际上,第4点并不完全正确,因为您可以通过传递this给构造函数中的另一个方法来泄漏对该对象的引用,但这有点像边缘情况.这是一种引人入胜的现象,因为您可以final在变量初始化之前访问变量,并从变量中检索两个不同的值,具体取决于它们在执行中的位置.
解决以下注释:构造函数本身不返回任何内容.它有一个void返回类型.变量实际上如何接收对象并不像你想象的那么简单,这是一个非常好的问题.您可以在以下Stack Overflow答案中阅读有关此主题的非常详细的答案,这些答案比我在此处复制的工作做得更好,更彻底.
作为旁注,正如Peter Lawrey在评论中提到的那样,您可以使用Unsafe API来创建对象的实例而无需执行构造函数.然而,根据其他一些Stack Overflow讨论,一般意见似乎是你所做的任何事情Unsafe都不符合普通的Java行为.
| 归档时间: |
|
| 查看次数: |
6185 次 |
| 最近记录: |