JAVASE构造方法

本文详细介绍了Java中的构造方法,包括其特点(如无返回值、方法名与类名相同等),无参数和有参数的构造方法定义,以及构造代码块的用法。同时强调了构造方法在对象创建和初始化过程中的作用。
摘要由CSDN通过智能技术生成

构造方法

1.构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用,Java中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。

2.Java 构造方法有以下特点:

  • 方法名必须与类名相同
  • 可以有 0 个、1 个或多个参数
  • 没有任何返回值,包括 void,不需要提供return
  • 默认返回类型就是对象类型本身
  • 只能与 new 运算符结合使用

🔔值得注意的是,如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。

3.怎么定义

[修饰符列表] 构造方法名(形参列表){

          构造方法体

}

有两种构造方法,无参数与有参数如下

//无参数构造方法
    public Student(){

    }
//有参数的构造方法
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
    //方法重载
    public Student(String name){
        this.name = name;
    }

  1. 如果没有构造方法,系统会默认提供一个无参数构造方法。如果显示了一个构造方法,系统不在提供默认构造方法。
  2. 一个类可以定义多个构造方法。(方法重载)
  3. 建议自己手动加上无参数构造器,以免加有参数构造器时出现覆盖。

完整代码

Student对象创建

package com.powernode.javase.oop04;

public class Student {

    //无参数构造方法
    public Student(){

    }
    //有参数的构造方法
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
    //方法重载
    public Student(String name){
        this.name = name;
    }



    /*
    * --------------------------------------------------------------
    * */



    private String name;
    private int age;

    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;
    }
}

对象调用

package com.powernode.javase.oop04;

public class StudentTest {

    public static void main(String[] args) {
       //调用无参数构造方法
        Student s = new Student();

        s.setName("小白");
        s.setAge(10);

        System.out.println(s.getName());
        System.out.println(s.getAge());

        /*
        * -------------------------------------------------------------------------
        * */

        //调用有参数构造方法
        Student s2 = new Student("小黑",11);
        System.out.println(s2.getName());
        //可以修改
        s2.setAge(13);
        System.out.println(s2.getAge());

        Student s3 = new Student("小蓝");
        System.out.println(s3.getName());


    }
}

  🔔解释调用对象new Student():

  1. new是运算符,Student()构造方法而Student是方法名 .
  2. 当一个类中如果没有显示任意一个构造方法,系统会默认构造哟个无参数的构造方法.
  3. 用变量去接受(保存的是内存地址) = new Student(); .

构造代码块

 1.语法格式

        {

                类容

        }

2.在每一次new时,都会先执行一次,构造代码块是在构造方法执行前执行的。

3.有什么用:如果所有的构造方法在最开始的时候有相同的代码,不妨将他放在构造代码块里面。

完整代码

创建对象 

package com.powernode.javase.oop04;

import javax.jws.soap.SOAPBinding;

public class Student {


    //构造代码块
    {
        System.out.println("构造代码块执行了");
    }




    
    /*
    * -------------------------------------------------------------------
    * */



    //无参数构造方法
    public Student(){

    }
    //有参数的构造方法
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
    //方法重载
    public Student(String name){
        this.name = name;
    }

    private String name;
    private int age;

    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;
    }
}

调用对象

​
package com.powernode.javase.oop04;

public class StudentTest02 {
    public static void main(String[] args) {
        Student student = new Student();
    }
}

​

C:\Users\seven\.jdks\corretto-1.8.0_362\bin\java.exe -javaagent:D:\IDEAIU\lib\idea_rt.jar=50200:D:\IDEAIU\bin -Dfile.encoding=UTF-8 -classpath C:\Users\seven\.jdks\corretto-
构造代码块执行了

Process finished with exit code 0

 执行原理

1.两个重要阶段

        第一阶段:对象创建

        第二阶段;对象初始化

2.对象什么时候创建

        new时,在堆内存中开辟空间。然后给所有属性赋值,完成创建

 

3.对象初始化什么时候完成

        构造方法体开始执行,标志着开始经行对象初始化,构造方法执行完毕,对象初始化完毕

快捷键

Alt + insert

🔔🔔​​​​​​​🔔创建与初始化密不可分

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值