构造方法的作用:
当类创建一个对象时会自动调用该类的构造方法,构造方法分为默认构造方法和带参数的构造方法
在创建对象时由编译器自动调用,并且在整个对象的生命周期内只调用一次。(出生)
构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。
构造方法的定义:
注意:
- 构造方法没有返回值
- 构造方法名字必须与类名相同
- 如果自定义了构造方法,那么java不会自动添加默认构造方法
- 如果用户没有显式定义构造方法,编译器就会默认生成一份构造方法,而且默认生成的构造方法一定是无参的
构造方法重载:
重载条件:
1.方法名重名
2.方法的形参列表不同:方法的参数类型(个数/顺序)不一样
public class Person {
Integer num;
Float money;
public Person(){
}
public Person(Integer num, Float money) {
this.num = num;
this.money = money;
}
}
构造方法重载效果:
注意:
无参构造是自动生成的,一旦定义了有参数构造器,那么无参数构造器就没有了,如果还想用无参数构造器,那么此时就需要自己手写一个无参构造器。
1.调用的是无参构造
这样创建对象,无参构造器是默认的,是被默认调用的
Car c = new Car();
2.通过有参构造器初始化对象并返回
Car c2 = new Car("保时捷",100);
方法重载:
条件:
- 相同的方法名:在同一个类中定义的方法必须有相同的名称。
- 不同的参数列表:方法的参数类型、数量或顺序至少有一项不相同。例如,一个方法可以接受两个整数参数进行相加,而另一个方法接受一个字符串和一个整数进行拼接,这两个方法就构成了重载。
- 方法的返回值类型并不影响重载,即使两个方法的名称和参数列表相同,但返回值类型不同,它们也不构成重载。
例子:简易计算机实现两个整数相加,三个浮点数相加
// 两个整数相加
public void Computer(Integer num1, Integer num2) {
this.num1 = num1;
this.num2 = num2;
System.out.println(num1+"+"+num2+"="+(num1+num2));
System.out.println("我是两个的重载函数");
}
// 三个浮点型数字相加
public void Computer(Double dnum1, Double dnum2, Double dnum3) {
this.dnum1 = dnum1;
this.dnum2 = dnum2;
this.dnum3 = dnum3;
System.out.println(dnum1+"+"+dnum2+"+"+dnum3+"="+(dnum1+dnum2+dnum3));
System.out.println("我是三个浮点数相加的重载函数");
}
public static void main(String[] args) {
Computer c1= new Computer();
c1.Computer(2,3);
Computer c2 = new Computer();
c2.Computer(2.5,6.5,7.9);
this关键词:
this关键字时对一个对象的默认引用,指向调用这个方法的对象
注意:
- this()必须是构造方法中的第一条语句 ,且this不能形成环。如果是调用的是带参数的需要传指定参数
2.this();表示在一个构造方法中调用另一个构造方法,而且必须放第一行
public class Person {
private String name;
private int age;
// 第一个构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 第二个构造函数
public Person(String name) {
// 调用第一个构造函数
this(name, 18);
}
}
- 成员变量和局部变量同名,用this调用成员变量,解决重名冲突
- this调用重载的构造方法,只能在构造方法中使用,且必须是构造方法的第一条语句
- this只能调用实例变量,实例方法和构造方法