需求的提出:能不能在实例化对象的同时,同时完成对象的初始化?
Person ming = new Person();
ming.setName = "Xiao Ming";
ming.setAge = 19
用构造方法之后,创建一个实例
Person ming = new Person("Xiao", 19);
ps:由于构造方法特殊,构造方法(函数)的名称就是类名
1、构造方法的特点
- 参数没有限制,在构造方法内部可以写任何语句
- 构造方法没有返回值
- 调用构造方法要用
new
操作符
2、默认构造方法
- 引用类型字段的默认值为null
- 整型字段默认值为0
- 布尔型默认值为false
class Person{
public Person(){
}
}
一旦自定义了构造方法,那么编辑器不在使用默认的构造方法,再掉用默认方法会报错,所以要想使用自定义和默认的构造方法,就需要把两种都构造出来
class Person{
private String name;
private int age;
public Person(){
}
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
3、多构造方法
在一个类中,可以定义多个构造方法,new操作会根据参数的个数、位置、和类型选择对应的构造方法
class Person{
private String name;
private int age;
public Person(){
}
public Person(String name){
this.name = name;
this.age = 12;
}
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
一个构造方法可以调用类中的其他构造方法,语句this()
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);
}
public Person(){
this("Unnamed");
}
}
4、学后一题
请定义一个交通工具(Vehicle)的类,其中有:
-
属性:速度(speed),距离(distance)等等
-
方法:移动(move(int s)),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等.
最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed, distance的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。调用 move方法改变distance,并输出已经移动的距离
package Object;
/**
* @className:Vehicle;
* @time:2022-04-13-15:12;
* @author:Lee Ye;
* @description:这是一个java示例;
*/
public class Vehicle {
private int speed;
private int distance;
public Vehicle(int speed, int distance){
this.speed = speed;
this.distance = distance;
}
public void move(int s){
this.distance += s;
}
public int getSpeed(){
return this.speed;
}
public int getDistance(){
return this.distance;
}
public void speedUp(int speed){
this.speed += speed;
}
public void speedDown(int speed){
this.speed -= speed;
}
}
package Object;
import Object.Vehicle;
/**
* @className:Test_Vehicle;
* @time:2022-04-13-15:17;
* @author:Lee Ye;
* @description:这是一个java示例;
*/
public class Test_Vehicle {
public static void main(String[] args){
Vehicle Car = new Vehicle(100,0);
System.out.println("汽车的初始速度:" + Car.getSpeed());
System.out.println("汽车的初始距离:" + Car.getDistance());
Car.move(100);
Car.speedDown(25);
Car.speedUp(30);
System.out.println("汽车的速度:" + Car.getSpeed());
System.out.println("汽车的行驶距离:" + Car.getDistance());
}
}