3.3 Java第三章构造方法的语法

第一部分:

构造方法Constructor(构造器)

一、构造方法的作用?

1.构造方法的执行分为两个阶段:对象的创建和初始化.这两个阶段不能颠倒,也不能分割.
2.在Java中,当我们使用关键字new时,就会在内存中创建一个新的对象,虽然对象已经被创建出来了,但还没有被初始化.而初始化则是在执行构造方法体时进行的.

二、构造方法如何定义?

1.[修饰符列表] 构造方法名[形参] { }

三.构造方法如何调用? 

1.new 构造方法名(实参).

四.关于无参数构造方法:

1.如果一个类没有显示的定义任何构造方法,系统会默认提供一个无参数构造方法,也被称为缺省构造器.一旦显示的定义了构造方法,则缺省构造器将不存在.为了方便对象的创建,建议将缺省构造器显示的定义出来.

五、构造方法支持方法重载机制

六、关于构造代码块,对象的创建和初始化过程梳理:

1.new的时候在堆内存中开辟空间,给所有属性赋默认值.
2.执行构造代码块进行初始化.
3.执行构造方法体进行初始化.
4.构造方法执行结束,对象初始化完毕.


第二部分(代码区)

1.Student类

package oop09;
/*
* 构造方法/Constructor/构造器
*
* 1.构造方法有什么作用?
*   作用1:创建对象(通过调用构造方法可以完成对象的创建)
*   作用2:对象的初始化(给对象的所有属性赋值就是对象的初始化)
* 2.怎么定义构造方法呢?
* [修饰符列表] 构造方法名(形参列表){
*       构造方法体;
* }
* 注意:构造方法名必须和类名一致.
*     构造方法不需要提供返回值类型.
*     如果提供了返回值类型,那么这个方法就不是构造方法了,就变成普通方法.
*
* 3.构造方法怎么调用?
* 使用new运算符进行调用.
* 语法:new 构造方法名(实参);
* 注意:构造方法最终执行结束之后,会自动将创建的对象的内存地址返回,但构造方法体中不需要提供"return"值语句.
* 4.在Java语言中,如果一个类没有显示的去定义构造方法,系统会默认提供一个无参数的构造方法.(通常把这个构造方法叫做缺省构造器.)
* 5.一个类中如果显示的定义了构造方法,系统则不在提供缺省构造器,所有,为了对象创建更加方便,建议把无参构造方法写出来.
* 6.在java中,一个类中可以定义多个构造方法,而且这些构造方法自动构成了方法的重载(overload).
*/
public class Student {
    // 无参数的构造方法显示的定义出来.
    public Student(){
        System.out.println("Student类的无参数构造方法执行了");
    }

    public Student(String name){
        this.name = name;
    }

    public Student(String name, int age, boolean sex, String address) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.address = address;
    }

    /*
     * 姓名
     */
    private String name;
    /*
     * 年龄
     */
    private int age;
    /*
     * 性别
     */
    private boolean sex;
    /*
     * 家庭住址
     */
    private String address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isSex() {
        return sex;
    }

    public void setSex(boolean sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

2.测试类

package oop09;

public class ConstructorTest01 {
    public static void main(String[] args) {
        // 调用Student类的构造方法来完成Student类型对象的创建.
        // s1就是一个引用,保存了内存地址,指向了Student类型的对象.
        // 这样就完成了学生对象的创建和初始化.
        // 无参数构造方法没有给属性手动赋值,但是系统会赋默认值.
        Student s1 = new Student(); // 构造方法

        // 通过调用另一个有参数的构造方法来创建对象,完成对象的初始化.
        Student zhangsan = new Student("张三", + 20 , true ,"北京");
        System.out.println("姓名: " + zhangsan.getName());
        System.out.println("年龄: " + zhangsan.getAge());
        System.out.println("性别: " + (zhangsan.isSex() ? "男" : "女"));
        System.out.println("地址: " + zhangsan.getAddress());
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值