其实如果了解python的化,其在生成一个实例对象的时候会调用两个系统方法__new__ 和__init__。
这个可以通过看生成的class文件看到,比如创建一个test.java,然后通过jclasslib这个软件查看class文件,当然ide也可以安装这个软件的插件。
暂时先不要理解class文件种的代码时什么意思,有时间就聊一下,而是需要关注的是init方法。
public class test {
int a;
public test() {
}
public void setA(int a) {
this.a = a;
}
public test(int a) {
this.a = a;
}
public void testNew1(){
test t=new test();
t.setA(1);
}
public void testNew2(){
test t=new test(1);
}
}
这个init方法,原代码java文件中没有写,但是在class文件中就有这个方法,而且神奇的是有几个构造方法就有几个init方法。
然后看不同的方法:
-
调用无参的构造方法
public void testNew1(){ test t=new test(); t.setA(1); }
然后看调用 的init方法的class文件:
这个其实如果看无参的构造方法似乎调用init方法没有什么意义,但是如果看一下有参数的构造方法调用就明白了。
-
调用有参的构造方法
public void testNew2(){ test t=new test(1); }
现在简单的说一下实例化和初始化的意义:
- 实例化:创建一个对象的过程称为实例化。在Java中,使用
new
关键字创建一个对象。通过new创建一个对象,就是实例化一个对象,也就是开辟了一个空间。 - 初始化:为对象的成员变量赋初值的过程。在Java中,对象的成员变量需要初始化为某个值,否则它们会自动初始化为默认值。可以在定义时或者在构造函数或初始化块中为成员变量指定初始值。
用一句话笼统来说就是:实例化是创造了对象,开辟了空间,初始化是为这个对象的属性进行赋值,如果没有定义赋值就会自动初始化为默认值。