java面向对象编程——构造方法

需求的提出:能不能在实例化对象的同时,同时完成对象的初始化?

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());

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值