构造方法(定义、有参、无参、重载)

一、构造方法是什么,有什么用?

构造方法是类的一个特殊的成员,在类实例化时会自动调用。
通过前面的学习,我们知道为一个属性赋值有两种方法:①、直接访问对象属性 ②、通过setXxx()方法
如果想在实例化对象的同时就为这个对象的属性进行赋值,可以通过构造方法来实现

二、构造方法的定义

构造方法三个条件:
①、方法名和类名相同
②、在方法名前面没有返回值类型的声明
③、在方法中不能使用return语句

Person p=new Person( );
//new Person()语句有两个功能
//①实例化Person对象    ②自动调用构造方法Person( )

三、无参构造方法、有参构造方法

class Person{
    public Person( ){
        System.out.println("无参构造方法被调用");
   }    
}

public class Test01{
    public static void main (String [] args ){
        Person p=new Person();//实例化Person对象
    }
}
//该方法是无参的构造方法,即构造方法不接收参数,执行后输出 无参的构造方法被调用了

下面是有参的构造方法


class Person{
    int age;
    //有参构造方法
    public Person (int a){
        age=a;
    }
    public void speak(){
        System.out.println("我今年"+age+"岁");
    }
}

public class Test02{
    public static void main (String [] args){
        Person p=new Person (20);//实例化同时赋值
        p.speak();
    }
}

四、构造方法的重载

像普通方法一样,构造方法也可以重载(参数类型或者参数个数不同)。
在创建对象时,可以通过调用不同的构造方法为不同的属性赋值。

五、构造方法注意事项

java中每一个类都至少有一个构造方法,如果我们没有创建,系统弄会自动为我们创建一个默认的构造方法(无参,方法体中无代码)。
但是只要我们自己定义了构造方法,系统就不会再为我们提供默认的构造方法了。如果我们定义了一个有参的构造方法,最好再定义一个无参的。因为实例化对象的时候,不一定会输入参数,那么没有无参的构造方法,再不输入参数,就会出错。
另外构造方法需要使用public来修饰,因为使用private的话,在别的类中无法实例化。

### 回答1: 空构造方法是为了在创建对象时,如果没有传入任何数,可以使用默认值进行初始化。如果没有定义构造方法,那么在创建对象时必须传入数,否则会编译错误。因此,定义构造方法可以提高代码的灵活性和可读性。 ### 回答2: 类定义构造方法的原因有以下几个方面: 1. 提供默认初始化:空构造方法可以在对象创建时提供默认的初始值,确保对象在创建后具有基本的可用状态。例如,如果一个学生类中有学号、姓名和年龄属性,在没有数的情况下,可以使用空构造方法初始化这些属性为默认值,如学号为0,姓名为空字符串,年龄为0。 2. 继承与多态:子类继承父类时,如果父类中没有定义构造方法且子类中不存在任何构造方法,则编译器会自动为子类生成一个默认的空构造方法。这是因为子类的创建依赖于父类,子类的构造方法需要使用父类的属性或方法,因此需要保证子类的构造方法可以正确地初始化父类的对象。 3. 应对特殊情况:有时候需要在创建对象后再为其属性赋值,这种情况下,可以先使用空构造方法创建对象,再通过设置器方法为属性赋值。例如,在一个商品类中,商品的价格可能需要从数据库中读取并进行特殊处理后才能确定,这时可以先使用空构造方法创建商品对象,再通过特定的方法设置商品价格。 4. 实例化工具类:工具类通常不需要提供成员变量,只是提供一些公共方法供其他类使用。这种情况下,工具类可以定义一个空构造方法,表示该类只能通过静态方法进行调用,不需要创建其对象。 总之,定义构造方法可以为类的对象提供默认的初始化,保证在创建对象时有一个可用的初始状态,同时适应继承与多态的需求,处理特殊情况以及实例化工具类的特性。 ### 回答3: 类定义构造方法的主要目的是为了创建一个无需传入数即可实例化对象的途径。具体原因如下: 1. 默认构造方法:如果在类中没有显式定义构造方法,编译器会自动生成一个默认的空构造方法。这个默认构造方法用于创建对象时,提供一个初始状态和默认值。 2. 继承:子类继承父类时,子类会自动继承父类的所有字段和方法,包括构造方法。如果父类没有定义构造方法,子类在实例化对象时也无法调用父类的构造方法,因此需要在父类中显式定义一个空构造方法,供子类使用。 3. 重载与方法重载:如果一个类中定义了多个构造方法,可以为每个构造方法提供不同的数列表,这就是构造方法重载。空构造方法可以与其他构造方法一起使用,提供更多的构造方式,满足不同的实例化需求。 4. 方便实例化:提供空构造方法可以使得对象的实例化更加方便。有时候我们并不需要在创建对象时传入初始值或数,而是希望在后续的操作中逐步设置对象的属性。 总之,定义一个空构造方法是为了提供创建对象的默认途径,使得程序更加灵活,更好地满足不同的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值