构造方法是对象被创建时初始化对象的成员方法,它具有和它所在的类完全一样的名字。构造方法只能有入口参数,没有返回类型,因为一个类的构造方法的返回类就是类本身。构造方法定义后,创建对象时就会自动调用它,对新创建的对象分配内存空间和初始化。在Java 中,构造方法也可以重载,当创建一个对象时, JVM会自动根据当前对方法的调用形式在类的定义中匹配形式符合的构造方法,匹配成功后执行该构造方法。

如果省略构造方法的定义,则 Java会自动调用默认的构造方法。但是如果定义了构造方法,则系统不再提供默认的构造方法。默认的构造方法没有任何参数,不执行任何操作。实际上,默认的构造方法的功能是调用此类的父类中的不带参数的那个构造方法,如果父类中不存在这样的构造方法,编译时会产生错误信息。Object 是 Java 中所有类的根,定义它的直接子类,可以省略 extends 子句,编译器会自动包含它。

构造方法的方法体定义中,可以调用此类的父类的构造方法,也可以调用此类的另一个构造方法,这种调用必须由方法体的第一个语句完成。但是,构造方法的调用不允许通过方法名,所以,用this 代表本类中的一个构造方法,而 super 则代表了其父类的一个构造方法。需要注意的是,在构造函数中,如果 this语句,则必有 super 语句,要么自己编写 super 语句,要么由系统自动调用 super 语句。而且 super语句调用的总是其父类的缺省构造函数,即无参的那个构造函数,如果其父类中没有缺省的构造函数,则编译出错。所以,子类如果有多个构造函数的时候,父类要么没有构造函数, 让编译器自动产生,那么在执行子类构造函数之前先执行编译器自动产生的父类的缺省构造函数;要么至少要有一个显  式的缺省构造函数可以让子类的构造函数调用。

另外还需要注意的有: (1) 对象是由 new 运算符创建的,且在任何构造函数执行之前就已经创建完毕了; (2)构造函数的执行总是 “ 向上 ” 的:而且总是先执行完父类的构造函数; (3) 显式初始化语句总是先于构造函数语句,但后于super() 或 this() 。

java构造函数经典详解相关推荐

  1. Java :内部类基础详解

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. public class OuterClass {pri ...

  2. Java内存溢出详解之Tomcat配置

    Java内存溢出详解 转自:http://elf8848.iteye.com/blog/378805 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError ...

  3. Java类加载机制详解【java面试题】

    Java类加载机制详解[java面试题] (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数 ...

  4. Java内存溢出详解

    Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在 ...

  5. 4.6 W 字总结!Java 11—Java 17特性详解

    作者 | 民工哥技术之路 来源 | https://mp.weixin.qq.com/s/SVleHYFQeePNT7q67UoL4Q Java 11 特性详解 基于嵌套的访问控制 与 Java 语言 ...

  6. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  7. java枚举使用详解

    http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951632.html java枚举使用详解 在实际编程中,往往存在着这样的"数据集& ...

  8. java多线程学习-java.util.concurrent详解

    http://janeky.iteye.com/category/124727 java多线程学习-java.util.concurrent详解(一) Latch/Barrier 博客分类: java ...

  9. tomcat java内存_[Tomcat]Java内存溢出详解Tomcat内存设置

    Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1.java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在启 ...

最新文章

  1. #HTTP协议学习# (八)拓展-HTTPS协议
  2. JS template string 神奇术
  3. Twitch未来五年的视频编码战略:从H.264到 AV1
  4. python——shape 与reshape
  5. 开发者如何快速精简容器云镜像?| 技术头条
  6. mysql慢查询日志分析工具比较_MySQL慢查询日志总结 日志分析工具mysqldumpslow
  7. poj - 3723 Conscription(最大权森林)
  8. 21. 包含min函数的栈(C++版本)
  9. AppLinks使用详解
  10. Java网络编程学习汇总
  11. 通达信l2接口公式代码怎么获取excel数据?
  12. 74ls20设计半加器_数字电子技术实验练习内容
  13. CentOS7各种代理设置
  14. 【zer0pts CTF 2022】 Anti-Fermat
  15. js重新加载iframe框架
  16. python 画图设置中文字体
  17. Unity InputField输入框调用win10平板虚拟键盘
  18. 操作系统-进程调度(FCFS和SJF)
  19. android studio logcat你怎么不就出来了呢
  20. JAVA POI通用Excel导入模板

热门文章

  1. Otter 异地机房数据同步的demo实施
  2. Servlet3.0 multipart 文件上传技术
  3. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...
  4. java十分钟速懂知识点——引用
  5. (转)jQuery.fn.extend与jQuery.extend到底区别在哪?
  6. linux查找文件或字符串的命令
  7. 关于不能够精确的对浮点数进行运算的问题
  8. 11月17日spring mvc入门培训
  9. 2021年寒假将至,教育部致信中小学生家长的一封信:人生如长跑,起步忌冲刺,薄发需厚积
  10. WINCE6.0+S3C6410主要时钟控制