- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在学习 Head First Java,目前正在学习构造函数章节。他们解释说,对象是通过在 new
关键字之后调用构造函数来创建的。
我的问题:创建新对象时运行的到底是什么?
我们以以下示例代码为例:
public class Const {
// instance variables
int number;
String name;
// Constructors
public Const() {
//implicit super
System.out.println("no-arg constructor");
}
public Const(int i, String s) {
//implicit super()
number = i;
name = s;
System.out.println("two-arg constructor");
}
// test method
public void doSomething() {
System.out.println("I'm a test");
}
// Main
public static void main(String[] args) {
Const c1 = new Const();
Const c2 = new Const(5, "Jerry");
}
}
现在,我认为创建 c1
时幕后发生的事情是:
public Const()
被调用super()
被调用Object
部分已构建。public Const()
回到堆栈顶部。最佳答案
What exactly happens during object creation? (Java)
所以这里唯一的区别是:
Const c1 = new Const();
这里的number将由int默认值初始化,即0,name将由null初始化,这是String的默认值
Const c2 = new Const(5, "Jerry");
这里分别是 5 和 Jerry
使用new Const(),构造函数将被调用,类将被加载到主内存。
public Const() {
//implicit super
super()
}
java中的super关键字是一个引用变量,用于引用父类对象,默认是Object类。关键字“super”随着继承的概念而出现。
现在它可以访问 Object 类的所有成员,即 toString、equals :
您可以访问
c1.toString() or c1.equals(obj)
When and how exactly are the instance variables and methods for the object created (what implicit code is added)?
我想现在您已经了解了实例变量是如何创建的,以及根据类型为其分配默认值。
如果仍然不清楚,请尝试了解内部拱门,这可能会有所帮助:
关于java - 对象创建过程中究竟发生了什么? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59755973/
Feel free to skip straight to TL/DR if you're not interested in details of the question 简短的序言: 我最近决定
我一直在阅读 A Tour of Go学习Go-Lang到目前为止一切顺利。 我目前在 Struct Fields类(class),这是右侧的示例代码: package main import "fm
Last time I got confused顺便说一下PowerShell急切地展开集合,基思总结了它的启发式如下: Putting the results (an array) within a
我是一名优秀的程序员,十分优秀!