在Java中,由于提供了名为“构造器”的一种特殊方法,所以类的设计者可担保每个对象都会得到正确的初始化。若某个类有一个构造器,那么在创建对象时,Java会自动调用那个构造器

格式及命名:

public class 类名{

访问修饰符 构造方法名(仅等于类名)(数据类型 参数,...){

}

}

示例:

package Jixun;

public class Demo1 {

public Demo1(){

System.out.println("Constuction was transferred!");

}

public static void main(String[] args){

Demo1 d = new Demo1();

}

}

由结果看出在创建Demo1对象d后,执行了该类的构造方法,因为,一旦创建一个对象:new Demo1(),就会分配相应的存储空间,这样可以保证对象得到正确的初始化。

当然,如格式所说,构造方法也可以使用自变量,为对象指定具体创建方式

package Jixun;

public class Demo1 {

public Demo1(){

System.out.println("Constuction was transferred!");

}

public Demo1(int i){

System.out.println("i="+i);

}

public static void main(String[] args){

Demo1 d = new Demo1();

d = new Demo1(3);

}

}

由结果我们可以看出当创建了两个对象后(为什么对象名都是d,程序正确执行了呢?new 类名()的作用是新建一个对象,并调用默认构造器!)其中一个没有给参数,另一个给了参数,然后这两个对象非常“聪明”地选择了相对应的构造方法并且执行,这就是方法重载(关于如何区分重载方法,见下面)。稍作一下改动,我们将第二个对象的参数改为double类型的数值又会如何?

程序报错!说Demo1的构造方法public Demo1(double)这种类型没有被定义,这就验证了,上面两个对象会选择适合的方法运行下去。

当我们将第一个构造方法删去后

有的同学可能会 问Demo1不是有默认的构造方法吗,为为什么这样报错了呢?

我的理解是,一旦用户自己写了构造方法,这个方法就成了该类唯一的构造器,编译器不会允许我们以其他任何方式创建一个Demo1对象,所以Demo1 d = new Demo1()括号中应该给一个int类型的值。

编译器说:“啊,你已经写了一个构造器,所以我知道你想干什么:如果你不放置一个默认的,是因为你想省略它!”

区分重载方法:

若方法有着相同的名字,Java怎么知道我们指向的是哪一个方法呢?这里有一个简单的规则,每个重载的方法都必须有一个独一无二的自变量类型列表

示例:

public Demo1(String s,int i){}

public Demo1(int i,String s){}

这两个 自变量列表的顺序不一样,所以我们可以进行区分。

更多内容请仔细阅读《Thinking in Java》

构造java_Java构造方法相关推荐

  1. eclipse里的无参构造_构造方法及其作用

    一.什么是构造函数 java构造函数,也叫构造方法,是java中一种特殊的函数.函数名与相同,无返回值. 作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法. 在现 ...

  2. 哈夫曼树的构造 java_Java实现哈夫曼树的构造

    哈夫曼树的内容这里不作解释,请自己搜索.下面给出哈夫曼树构造过程的 Java 实现. 结点类: 1./**2. * 二叉树节点3. */4.public class Node implements C ...

  3. 空构造方法java_java 构造方法

    构造方法的格式 修饰符 方法名(形参列表){ } 构造方法是用来创造对象,我们能够不写构造方法就建立新对象是因为系统默认有一个空参构造方法: 构造方法没有返回值,也不用返回值: 构造方法的方法名与类名 ...

  4. 测试假数据构造一键构造方法,Python Faker包使用手册

    前言 当我们开发完成之后,需要一些假数据来支持我们的系统.如果自己构造的话,费时费力,还不一定能够构造合适的数据.而用python的faker包,构造假数据非常简单! 安装工具 pip install ...

  5. 代码和普通的java_Java中普通代码块,构造代码块,静态代码块区别及代码示例...

    对静态代码块以及构造函数的执行先后顺序,一直很迷惑,看了孙伟琴老师的<java面向对象编程>又结合毕老师的java基础视频中的讲解,现用下面的这段小程序来简明扼要的叙述一下,以加深理解,与 ...

  6. java无参构造赋值怎么没用_Java有参构造方法和无参构造方法详解

    一:有参数构造方法 在之前我们要为一个对象赋值,先要创建好对象之后然后"对象名.属性名"或者调用属性的setter为属性赋值.但是在很多时候觉得这样做很麻烦,最好的做法是在创建对象 ...

  7. java中普通代码块,构造代码块,静态代码块的区别及代码示例

    本文转自:http://www.cnblogs.com/sophine/p/3531282.html 执行顺序:(优先级从高到低)静态代码块>main方法>构造代码块>构造方法. 其 ...

  8. Java中普通代码块,构造代码块,静态代码块区别

    Java中普通代码块,构造代码块,静态代码块区别及代码 示例 //执行顺序:(优先级从高到低.)静态代码块>mian方法 >构造代码块>构造方法. 其中静态代码块只执行一次.构造代码 ...

  9. java中标准封装结构_java中的构造,封装

    今天给大家讲一下面向对象中的构造,封装: 构造:构造方法有以下几个特点:1.方法名和类名一致.2.无返回类型.接下来的几种构造样式,直接上代码吧: //这是一个宠物类 有一个属性:名字(name) p ...

最新文章

  1. 没学过编程能学python吗_没有编程基础,可以自学Python吗?
  2. 项目实战---模拟亿邦动力网
  3. 【arduino】arduino代码运行时间测试函数,代码性能运行时间测试方法
  4. apt-get update碰到错误
  5. java之七 高级类设计
  6. java写的学生信息查询系统_Java编写学生信息查询系统,报错!!!
  7. 工欲善其事必先利其器,TI-ONE平台“实操手册”在这里!
  8. AWT_Swing_单选框(Java)
  9. 图(用list邻接表表示)的深度优先和广度优先(递归和非递归实现)
  10. 2022 WTM 女性开发者大会邀你开启心旅程
  11. ie11下下载文件,文件名乱码的解决方法
  12. 预警“立功”|用小米手机真的能救命
  13. 『Reprint』GRADUAL
  14. qsort 用法详解
  15. 留几手:互联网创业到底是咋回事(说得真经典,创业者不创业的都值得一看)
  16. 教育期刊《中学历史教学参考》杂志简介及投稿须知
  17. 微信公众号获取OpenId(未授权)(需要关注公众号)
  18. 思科路由器关联RADIUS服务器配置命令
  19. mysql 生成随机(数字、英文字符、汉字函数)
  20. openwrt各软件包对应功能_极路由 1 刷 openwrt记录

热门文章

  1. 8 个弱点助我成为更好的开发人员!
  2. 为什么我会放弃 Webpack 而选择 Vite
  3. TypeScript 令我苦不堪言
  4. 中台彻底搞砸了?下一站,小中台大前台
  5. Android 内存泄漏问题多多,怎么优化?
  6. 达摩院自研数学规划求解器发布,最新技术将通过阿里云对外输出
  7. 借势新基建,如何在智能基础设施布一盘大局?
  8. 2020 存储技术热点与趋势总结
  9. 漫画:为什么下载电影进度总是卡在 99% 就不动了?
  10. 这一次,彻底弄懂 Java 字节码文件!