创建一个对象时,要调用这个类的构造器 Person p=new Person(); 即调用了Person()这个构造器创建了Person对象; 简单说,构造器是用来创建和初始化对象的,用多了就自然明白了
构造方法就是与类同名的那个方法,它的作用是可以用来初始化 class Person //人类{ public Person(String n,int a) //构造方法 { name = n; age = a; } private string name; private int age; } static void main(String[] args){ Person p = new Person("张三",14);//这就是作用 } new一个对象的时候要用到构造函数,例如Hello hello = new Hello();这时调用的是Hello的无参数构造方法;Hello hello = new Hello("hi");这个是调用Hello有参数构造方法,在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.如果Hello类中已经有了一个有参数的构造方法,这时再使用 Hello hello = new Hello();来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法.
Person p=new Person();
即调用了Person()这个构造器创建了Person对象;
简单说,构造器是用来创建和初始化对象的,用多了就自然明白了
class Person //人类{
public Person(String n,int a) //构造方法
{
name = n; age = a;
}
private string name;
private int age;
}
static void main(String[] args){
Person p = new Person("张三",14);//这就是作用
}
new一个对象的时候要用到构造函数,例如Hello hello = new Hello();这时调用的是Hello的无参数构造方法;Hello hello = new Hello("hi");这个是调用Hello有参数构造方法,在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.如果Hello类中已经有了一个有参数的构造方法,这时再使用 Hello hello = new Hello();来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法.
在程序执行中,JVM通过装载,链接,初始化这3个步骤完成.
初始化这一步骤是由构造方法来完成的,
只有初始化后类的对象才可以正常使用.
在程序执行中,JVM通过装载,链接,初始化这3个步骤完成.
初始化这一步骤是由构造方法来完成的,
只有初始化后类的对象才可以正常使用.
1.使用new+构造方法创建一个新的对象
2.构造函数是定义在java类中的一个用来初始化对象的函数。
3.构造函数与类同名且没有返回值
首先静态的内容
然后是构造器
顺序这里不在赘述
构造器里想执行什么就写什么
一般常用初始化属性,加载其他的类等等
还有就是将构造方法设置为private的,那么你就可以实现一个经典的设计模式——单例模式了。所以有了构造方法是程序灵活性更高。
并不强制要求所有的类都要有构造方法,如果没有什么需要初始化的数据,完全可以不用构造方法由于Java有内存的自动垃圾回收机制,所以一般不用像C++里的析构函数做清理工作,Java自动帮着搞定了
但是像打开的文件关闭这样的操作,最好还是在程序中明确的调用一下比较好
Student s=new Student("yuhero");
s是new Student(“yuhero”)对象的引用(可以理解成一个对象在内存中的代号,方便使用该对象)。
这个对象具有Student类的特性,能调用Student中函数(方法、动作),并在一开始就为该对象的姓名特性赋上yuhero这个内容。
对于new Student("yuhero"):
在java中会把Student("yuhero")这个对象新建在内存,并把类资源加载在内存,方便Student("yuhero")对象调用相关类的资源。
其实重载的作用也是创建对象,只是创建的对象不同而已。这也是为什么要重载的原因。
1加载Demo.class,文件中的非静态成员会加载到非静态的区域中,静态中的内容会加载到静态区域中,先加载静态的成员变量,然后加载静态代码块,再加载静态的成员方法。
2 开始给静态成员变量默认初始化,默认初始化完成后,开始给所有的静态成员变量显示初始化。
3 所有静态成员变量显示初始化完成后,开始执行静态的代码块。这时,Demo.class加载完成。
4 开始在堆中创建一个Demo对象。给Demo对象分配内存空间,就是分配一个地址值。
5 开始对类中的非静态成员变量默认初始化值。
6 默认初始化值后开始加载和对象匹配的构造函数。
6.1 有个隐式的super();
6.2 给所有的非静态成员变量显示初始化。
6.3 执行构造代码块
6.4 执行构造函数中的代码。
7此时对象创建完成,把地址值赋给引用变量d
构造方法用于完成对象属性的赋值构造方法通常是通过new关键字隐式调用