对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:
1.声明:声明一个对象,包括对象名称和对象类型。
2.实例化:使用关键字 new 来创建一个对象。
3.初始化:使用 new 创建对象时,会调用构造方法初始化对象。
有许多事物刚创建时就有初始化的数据
于是就有了
构造函数(构造系)
体现
1.没有返回值类型——构造完就结束,需要结果,void也不要写,区别于一般函数
2.构造函数和类名一致
3.没有具体返回值
属性
创建对象时自动调用构造函数,因为该对象中的属性要初始化
定义完一个类,在创建对象的时候就有一个默认的空参数的构造函数,该构造函数是编译器编译完Java文件时,在class文件中(编译器)自动生成的(省略不写,如:main函数里面的return不用写),如果类中有构造函数,那么编译器就不会在该类中添加(自动生成)默认的空参数的构造函数。
细节
1.有些对象一初始化就有多个属性值,有些一初始化没有
定义多个构造函数(重载),可以实现任何属性初始化赋值
2.构造函数后有默认的return,省略了而已,用于结束初始化动作
3.构造函数可以被私有化(private修饰),但是不能创建对象,作用:其他程序无法创建该对象,只能在本类创建。即,如果一个类不想被别的类访问,那么可以通过构造函数私有化来实现。
构造函数与一般函数的区别
1.写法不一样——构造含税的名称必须和类名一样,且构造函数没有返回值
2.运行上不一样——对象一创建就会调用构造函数,一般方法是对象创建后才会调用所需要的一般函数
3.有了构造函数依旧需要set函数,因为属性可能要改
4.构造函数只有创建函数的时候调用一次(只初始化一次),一般函数可以调用无数次
5.当构造函数之间进行互相调用时,用this()来引用对象
如:
private Person(String n)
{
name=n;
}
Person (String n,int a)
{
this(n);//调用一个字符串参数的构造函数
age=a;
}
%this表示指向对象地址,所以操作时是对this指向的对象就行操作//对象调用的方法中都有this引用指向着调用该方法的对象,而且this必须放最前面,先执行初始化再进行赋值,因为this只能有一句,因为它必须在第一行。
this的使用
%函数变量里面的属性省略了this.表示对象的,一般可以省略,但是增加了可以增加可读性,如果有局部变量与局部变量同名,那么不能省略,以防止有局部变量里面含有相同名字的变量。
对象创建过程
1.加载类文件进入方法区,并进行空间分配
2.如果有静态变量,先默认初始化,再显示初始化
3.如果类中有静态代码块,要执行,仅一次
4.通过new在堆内存中开辟空间,并明确首地址值
5.对对象中的属性默认初始化
6.调用对应的构造函数进行初始化
/*
1.super()://访问父类中的构造函数
2.成员变量的显示初始化
3.构造代码块初始化
*/
7.构造函数内部:
7-1调用父类构造函数super();
7-2成员变量的显示初始化
7-3构造代码块初始化
7-4构造函数内容自定义内容初始化
8.对象初始化完毕后,将地址赋值给引用变量