Java面向对象2--构造方法

定义:每一个class中都有构造方法。当创建一个对象时,我们所调用的是默认的构造方法。使用构造方法的作用是,初始化一个实例对象。

默认构造方法

默认的构造方法属于无参构造方法。调用默认的构造方法时,需要调用对应参数的set方法,不然实例的内部状态是不正确的。

默认的构造方法的形式:

class 类名称 {
    public 类名称() {
    }
}

 例如:

class Person {
    private String name;
    private int age;

    //构造方法
    public Person() {
    }
    //set,get方法
    public String setName(name) {
        this.name = name;
    }
    public int setAge(age) {
        this.age = age;
    }
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
}

有参构造方法

 其中的构造方法就是默认的构造方法,在class中可写可不写,当然,如果需要在实例化对象的时候就传参也是可以的,只要自己定义一个有参数的构造方法即可。

但要注意的是,当你定义了一个有参数的构造方法时,那默认的无参构造方法就会不存在,若实例化对象时使用的是无参构造方法那就会报错。若是想要两个都使用,就要定义两个构造方法。

 例如:

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person("Xiao Ming", 15); // 既可以调用带参数的构造方法
        Person p2 = new Person(); // 也可以调用无参数构造方法
    }
}

class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
     public String setName(name) {
        this.name = name;
    }
    public int setAge(age) {
        this.age = age;
    }
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
}

多构造方法

构造方法的个数不局限于1个,可以根据参数的类型及数量进行定义,在new的时候,编译器会根据参数的类型,位置以及数量找到对应的构造方法。

并且也可以在构造方法中调用构造方法,可以实现构造方法的复用。调用构造方法的方法是: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); // 调用另一个构造方法Person(String, int)
    }

    public Person() {
        this("Unnamed"); // 调用另一个构造方法Person(String)
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值