Java--构造方法

Posted mo-nv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java--构造方法相关的知识,希望对你有一定的参考价值。

1.构造方法:类中的特殊方法,主要用于创建并初始化对象。

2.特点:构造方法的名称与类名完全相同

      没有返回值类型(定义的时候不用写 void;普通方法没有返回值的时候 要写void)

      创建对象时,触发构造方法的调用,不可以通过句点手动调用(.方法名)

注意:如果没有在类中显示定义构造方法,则编译器默认提供无参构造方法

示例:1. 演示类中是否有默认的构造方法

package com.monv.gouzaofangfa;
/*
 * 学生类
 */
public class student {
    
    String name;//姓名
    int    age;//年龄
    String sex;//性别
    double score;//分数
    //这个是编译器默认提供的构造方法 用一条打印输出来测试在创建对象的时候是否执行该默认的构造方法
    public student(){
        
        System.out.println("执行了默认的构造方法。。。");
    }
    
    //方法
    public void sayHi(){
        System.out.println("该学生姓名为:"+name+";年龄为:"+age+";性别为:"+sex+";分数为:"+score);
    }
}
-----------------------调用------------------------
package com.monv.gouzaofangfa;

public class TestStudent {
    public static void main(String[] args) {
        student monv = new student();
    }
}
----------------------执行结果------------------------
执行了默认的构造方法。。。

示例2.构造方法可以做一些初始化的工作(在构造方法中给类的属性赋值)

package com.monv.gouzaofangfa;
/*
 * 学生类
 */
public class student {
    
    String name;//姓名
    int    age;//年龄
    String sex;//性别
    double score;//分数
    //这个是编译器默认提供的构造方法 用一条打印输出来测试在创建对象的时候是否执行该默认的构造方法
    public student(){
        //初始化工作 给变量赋初始值
        System.out.println("执行了默认的构造方法。。。");
        name="魔女";
        age = 30;
        sex = "女";
        score = 96;
    }
    
    //方法
    public void sayHi(){
        System.out.println("该学生姓名为:"+name+";年龄为:"+age+";性别为:"+sex+";分数为:"+score);
    }
}
----------------------调用---------------------------------
package com.monv.gouzaofangfa;

public class TestStudent {
    public static void main(String[] args) {
        student monv = new student();
        monv.sayHi();
    }
}
------------------------结果------------------------------
执行了默认的构造方法。。。
该学生姓名为:魔女;年龄为:30;性别为:女;分数为:96.0

3.对象创建的时候都完成了哪些功能(  student monv = new student(); )

   (1)在内存中开辟一个空间,并赋值属性为默认值(整数:0,小数:0.0 ,字符 :u0000(空格),布尔: False,其他:null)

   (2)调用默认的构造方法 为各个属性赋初始值 来完成初始化

   (3)将对象的地址赋值给变量 (把对象地址赋值给monv)

4.构造方法的重载

   构造方法也可以重载,遵循重载的规则(根据传入的参数来匹配对应的构造方法)

  注意:如果代码中有带参数的构造方法,编译器就不会再默认生成不带参数的构造方法,则要手动添加不带参数的构造方法,否则创建对象调用默认的构造方法会报错

-----------------重载方法---------------------------------
package com.monv.gouzaofangfa;
/*
 * 学生类
 */
public class student {
    
    String name;//姓名
    int    age;//年龄
    String sex;//性别
    double score;//分数
    //这个是编译器默认提供的构造方法 用一条打印输出来测试在创建对象的时候是否执行该默认的构造方法
    public student(){
        //初始化工作 给变量赋初始值
        System.out.println("执行了默认的构造方法。。。");
//        name="魔女";
//        age = 30;
//        sex = "女";
//        score = 96;
    }
    
    public student(String n,int a){
        name = n;//把参数n的值给name
        age  = a;//把参数a的值给age
    }
    
    public student(String n,int a,String s,double sc){
        name = n;//把参数n的值给name
        age  = a;//把参数a的值给age
        sex  = s;//把参数s的值给Sex
        score = sc;//把参数sc的值给score
    }
    //方法
    public void sayHi(){
        System.out.println("该学生姓名为:"+name+";年龄为:"+age+";性别为:"+sex+";分数为:"+score);
    }
}
----------------------重载方法调用-----------------------------------
package com.monv.gouzaofangfa;

public class TestStudent {
    public static void main(String[] args) {
        student monv = new student();
        monv.name="魔女";
        monv.age = 30;
        monv.sex = "女";
        monv.score = 96;
        monv.sayHi();
        
        System.out.println("---------------");
        
        student xiaoming = new student("小明", 18);
        xiaoming.sayHi();
        
        System.out.println("---------------");
        
        student xiaoli = new student("小李", 20, "男", 95);
        xiaoli.sayHi();
        
    }
}
--------------------------运行结果-------------------------------
执行了默认的构造方法。。。
该学生姓名为:魔女;年龄为:30;性别为:女;分数为:96.0
---------------
该学生姓名为:小明;年龄为:18;性别为:null;分数为:0.0
---------------
该学生姓名为:小李;年龄为:20;性别为:男;分数为:95.0

 

以上是关于Java--构造方法的主要内容,如果未能解决你的问题,请参考以下文章

Java如何快速构造JSON字符串

在 Visual Studio 中创建构造函数的代码片段或快捷方式

无法解析片段中的 ViewModelProvider 构造?

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

Java——线程池