构造器(也称构造方法)

构造器(也称构造方法)

**简介:**如果需要在实例化对象的同时就为这个对象的属性进行赋值,可以通过构造方法来实现。构造方法是类的一个特殊成员。

构造方法的定义:

[修饰符] 方法名 ([参数列表]){
    //方法体
}

构造器需要满足以下三个条件:

  • 方法名与类名相同
  • 在方法名前面没有返回值类型的声明
  • 在方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束

构造方法分为两种:

  • 无参构造方法(书上的例子)
class Person{
    //类的构造方法
    public Person{
        System.out.println("调用了无参构造方法");
    }
}

public class Example{
    public static void main(String[] args){
        Person p = new Person(); //实例化Person对象
    }
}

//运行结果为:调用了无参构造方法

在通过"new Person()"实例化Person对象时会自动调用该类的构造方法

  • 有参构造方法(书上的例子)
class Person{
    //声明int类型的变量age
    int age;
    public Person(int a){
        age = a;   //为age属性赋值
    }
    
    //定义speak()方法
    public void speak(){
        System.out.println("我今年"+age+"岁了");
    }
}

public class Example{
    public static void main(String[] args){
        Person p = new Person(18); //实例化Person对象
        p.speak();
        
    }
}


//运行结果:我今年18岁了

通过有参构造方法可以实现对属性的赋值。"new Person(18)"会调用有参构造方法来实例化一个Person对象,并传入参数18,对age进行赋值,Person对象调用speak()方法时,age属性已经被赋值为18。

脚下留心:

在Java中的每一个类都至少有一个构造方法,如果在一个类中没有显示地定义构造方法系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,在其方法体中没有任何代码,即什么也不做。

下面两种写法完全相同

//第一种
class Person{
    
}
//第二种
class Person{
    public Person(){
        
    }
}

以上都是书上总结

补充:

构造器:

  1. 定义有参构造之后,如果想使用无参构造,显示的定义一个无参构造
  2. Alt + insert 快捷键 生成构造器
  3. this.name(代表当类中的) = name(传进来的值);
  • one
package com.kuang;

public class People {
    //一个类什么都不写,它也会存在一个方法
    //显示的定义构造器

    String name;
    //实例化初始值
    //1.使用new关键字,本质是在调用构造器
    public People(){
    }

    //有参构造:一旦定义了有参构造,无参构造必须显示定义
    public People(String name){
        this.name = name;
    }

    public static void main(String[] args) {
        //new  实例化一个对象
        People people = new People("施刚龙");

        System.out.println(people.name);//施刚龙

    }

}

  • two
package com.kuang;

public class People {
    //一个类什么都不写,它也会存在一个方法
    //显示的定义构造器

    String name;
    //实例化初始值
    //1.使用new关键字,本质是在调用构造器
    public People(){
    }

    //有参构造:一旦定义了有参构造,无参构造必须显示定义
    public People(String name){
        this.name = name;
    }


}
package com.kuang;

public class Application {
    public static void main(String[] args) {
        //new  实例化一个对象
        People people = new People("施刚龙");

        System.out.println(people.name);//施刚龙

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等慢慢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值