构造函数
在面向对象中有一个非常重要的知识点,就是构造方法。每个类都有构造方法,在创建该类的对象的时候他们将被调用,如果没有定义构造方法,Java 编译器会提供一个默认构造方法。 创建一个对象的时候,至少调用一个构造方法。比如在新建一个对象new Object(),括号中没有任何参数,代表调用一个无参构造方法(默认构造方法就是一个无参构造方法)。构造方法的名称必须与类名相同,一个类可以定义多个构造方法。
构造方法的具体内容:
1、构造方法的名称与类名相同,且没有返回值。它的语法格式如下:
//与类同名,可以指定参数,没有返回值
public 构造方法名(){
//初始化代码
}
下面是一个构造方法的例子:
public class People{
//无参构造方法
public People(){
}
//有一个参数的构造方法
public People(int age){
}
}
又例如具体的构造方法:
public class People {
//属性(成员变量)有什么
double height; //身高
int age; //年龄
int sex; //性别,0为男性,非0为女性
//构造函数,初始化了所有属性
public People(double h, int a, int s){
height = h;
age = a;
sex = s;
}
}
//创建对象,调用我们自己定义的有参构造方法
People XiaoMing = new People(168, 21, 1);
上面的例子中通过new关键字将类实例化成对象,而new后面跟的就是构造方法。于是可以知道new + 构造方法可以创建一个新的对象。
2、如果在定义类的时候没有写构造方法,系统会默认生成一个无参构造方法,这个构造方法什么也不会做。
3、当有指定的构造方法时,系统都不会再添加无参构造方法了。
4、构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。
引用与对象实例
在新建对象实例时,需要为对象实例设置一个对象名,就像这样
Object object=new Object();
那么变量 object 就真的是 Object 对象么,这里其实只是创建了一个 object 对象的引用。这里就和指针一样,变量 object 保存的其实 Object 对象的引用,指向了 Object 对象。
再看下面的例子
Object object1=new Object();
Object object2=object1;
System.out.println(object1==object2);
运行得到的结果为 true,说明 object1 和 object2 的地址相同(==会比较两个对象的地址是否相同),它们实际上是引用同一对象,如果改变 object1 对象内部的属性,那么 object2 的属性同样会改变。