一、概念

java中构造方法指的是:
与类名相同,无返回类型的方法,参数可以为空,也可以带参数。
比如一个 Dao 类,private Dao(){}这个就是无参数的构造方法。
private Dao(String name){}这个就是带参数的构造方法。
作用:用来初始化 java 类,提供类的初始化和实例化,以便调用。

二、作用

new一个对象的时候要用到构造函数,例如Hello hello = new Hello();这时调用的是Hello的无参数构造方法;Hello hello = new Hello(“hi”);这个是调用Hello有参数构造方法,在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.如果Hello类中已经有了一个有参数的构造方法,这时再使用Hello hello = new Hello();来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法。

三、区别

有参数的构造方法的主要目的是为类中的属性初始化的,而无参数的构造方法,可以控制new对象。
假设你的午餐构造方法不是public 修饰 而是project ,
那么别人将不只能直接new一个对象,这就起到了控制作用。
为什么要自动生成无参构造呢?
你没有构造方法就不能new出对象 所以就给你生成一个无参构造方法
一般构造方法就是来控制你new对象的 还有就是初始化属性

很显然,构造器的最大用处就是在创建对象时,对对象的实例进行初始化,那么构造器又分为有参构造和无参构造,下面我们就通过代码来理解有参和无参构造。

package sessionWork2;
/**
*默认的无参构造方法
*/public class Point {int x; int y;public void movePoint(int dx,int dy){//              this.x += dx;this.x = this.x+dx;
//              this.y += dy;this.y = this.y+dy;}public static void main(String[] args){//为Point类new一个对象,因为类里面有无参构造器,看不到,所以才能new出来,Point p2 = new Point();p2.movePoint(2, 6);System.out.println("p2X轴的坐标为:"+p2.x+"\n" + "P2Y轴的坐标为 :" + p2.y);}}
输出结果如下,采用的是默认的无参构造,因为类里面有默认的无参构造器,所以

我们可以new出来对象

下面我们来看下,如果我们创建一个有参构造的话,是否可以new出来无参的对象

package sessionWork2;/***创建一个有参构造器,然后new一个无参对象*/public class Point {int x; int y;//           创建一个有参构造器public Point(int x0, int y0){this.x = x0;this.y = y0;}public void movePoint(int dx,int dy){//              this.x += dx;this.x = this.x+dx;
//              this.y += dy;this.y = this.y+dy;}public static void main(String[] args){Point p2 = new Point();p2.movePoint(2, 6);System.out.println("p2X轴的坐标为:"+p2.x+"\n" + "P2Y轴的坐标为 :" + p2.y);}}

可以看到我们只有有参构造的时候是无法new出来无参的对象的

此时我们再创建一个无参构造器,发现我们new的无参对象不报错了,

package sessionWork2;public class Point {int x; int y;//创建一个无参构造器public Point(){     }//创建一个有参构造器public Point(int x0, int y0){this.x = x0;this.y = y0;}public void movePoint(int dx,int dy){//              this.x += dx;this.x = this.x+dx;
//              this.y += dy;this.y = this.y+dy;}public static void main(String[] args){Point p1 = new Point(2,2);p1.movePoint(3,6);System.out.println("p1x轴的坐标为:" + p1.x +"\n" + "p1y轴的坐标为:"+p1.y);Point p2 = new Point();p2.movePoint(2, 6);System.out.println("p2X轴的坐标为:"+p2.x+"\n" + "P2Y轴的坐标为 :" + p2.y);}}

执行结果如下

有参构造器(方法)和无参构造器(方法)的作用(区别)相关推荐

  1. Apache ab测试工具使用方法(无参、get传参、post传参)

    Ab测试工具是apache自带的测试工具,具有简单易上手的特性,下面我总结一下我的使用方法,首先去官方下载apache程序包,我下的最新版本apache2.4.23,下载地址Download - Th ...

  2. java无参_Java——类的无参、带参方法

    >类的无参方法 什么是类的方法 类是由一组具有相同属性和共同行为的实体抽象而来.对象执行的操作是通过编写类的方法实现的.显而易见,类的方法是一个功能模块,其作用是"做一件事情" ...

  3. java 反射无参方法_无参构造方法 ? 反射

    若一个类中未定义默认的构造方法,当通过反射的机制这个类的实例会报下面的错误: Exception in thread "main" java.lang.[b]Instantiati ...

  4. java空类型方法无参_类的无参方法

    一.JavaDoc注释 语法: /** *@author Flc */ @author 标明开发该类模块的作者 @version 标明该类模块的版本 @see 参考转向,也就是相关主题 @param ...

  5. 构造器(有参、无参)

    构造器: 就是和类名相同但无返回类型的方法.用于当前或某一对象的实例化,并将当前或某一对象返回.无参构造:1.如果使用new关键字实际上是调用无参构造器:2.无参构造往往是为了初始化一些值.有参构造: ...

  6. 方法功能从无参方法、含参方法到重载方法

    时间紧张,先记一笔,后续优化与完善. 一.无参方法 a.无参方法法语: 访问修饰符> 返回类型 <方法名>(){ //方法的体主 } b.义定 什么是无参方法?所谓无参方法即形如,诸 ...

  7. java无参_Java中无参无返回和无参带返回的类型方法

    在前面的文章中,我们学习了java中方法的定义.分类及调用的相关知识.知道了java中的方法其实可以叫做函数,目的是实现某些我们想要的功能,也知道了java中方法的分类共有四种:无参无返回.无参带返回 ...

  8. wait与sleep的讲解(wait有参及无参区别)

    目录 1. wait() 与wait( long timeout ) 区别 2. wait(0) 与 sleep(0)区别 3. wait 和sleep 释放代码 4.  wait 与 sleep 区 ...

  9. 为什么要写无参构造函数

    今天在码代码时报错: Cannot construct instance of org.tech.arthur.model.domain.DataTestDTO (no Creators, like ...

  10. java构造方法:有参构造方法和无参构造方法区别

    java构造方法:有参构造方法和无参构造方法 一.无参构造方法 1.定义: 如果编写一个javaBean时没有添加无参构造方法,那么编译器会自动添加无参构造方法: 但是如果编写时添加了有参构造方法而未 ...

最新文章

  1. c++ log函数_认识这19种深度学习损失函数,才能说你了解深度学习!
  2. 2021-07-08执行Linux的命令分析
  3. 如何用javasript对Gridview的项目进行汇总统计?
  4. 开发Linux系统下的磁盘加密方法详解
  5. Android应用程序运行方式以及优先级
  6. struct timeval结构体 以及 gettimeofday()函数
  7. runtime批处理mysql导出_【原】使用批处理BAT文件处理Mysql数据库 | 学步园
  8. c语言怎么产生随机字母,菜鸟求助,写一个随机输出26个英文字母的程序
  9. iPhone 12系列重新上架苹果天猫旗舰店,5499元的iPhone 12今晚开订!
  10. 【es】es 分布式一致性原理剖析(二)-Meta篇
  11. Linux学习之基础命令
  12. 1050. 螺旋矩阵(25)-PAT乙级真题
  13. node项目打包如何隐藏html后缀,详解webpack打包nodejs项目(前端代码)
  14. Java 输入/输出 I/O流 RandomAccessFile
  15. Python字典对象实现原理
  16. librdkafka 封装的C++类
  17. 解决linux kernel 提交gerrit时,运行checkpatch.pl产生的xxxx64_defconfig not generated by savedefconfig问题
  18. Softing为艾默生提供AMS设备管理系统的连接解决方案
  19. 怎么给固定资产安装标签
  20. 【Android 逆向】ELF 文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 )

热门文章

  1. 鸿蒙初劈-Linux的传奇历史
  2. 尼科彻斯定理(简单易懂)
  3. Radon定理与证明
  4. hyper扩展linux硬盘,Hyper-V 虚拟机扩展磁盘
  5. HyperMesh网格划分简要流程小试
  6. html实现滑块拖动验证
  7. 以上证指数为例学习pandas数据分析
  8. python中iloc与loc的区别
  9. 扒一扒DDR4的新功能和PCB设计上的一些注意事项--转
  10. 自研数据库CynosDB存储系统如何实现即时恢复