什么是是JAVA构造函数

什么是是JAVA构造函数每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为…

大家好,又见面了,我是你们的朋友全栈君。每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。
一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。

构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。

java 构造函数的执行过程

类初始化时构造函数调用顺序:
(1)初始化对象的存储空间为零或null值;
(2)调用父类构造函数;
(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

package strong; public class Const { private int a, b, c; public void Const() { System.out.println(“构造函数”); a = 3; b = 5; this.c = a + b; } public void test() { System.out.println(“The value of c :” + c); } public static void main(String[] args) { Const c = new Const(); c.test(); } }

输出结果:

The value of c :0

意外吗?好还看看上面的说明就知道原因了;

public void Const() {
System.out.println(“构造函数”);
a = 3;
b = 5;
this.c = a + b;
}

其实不是这个类的构造函数,因为这个类没有声明构造函数,所以默认走一个不带任何参数的构造函数;

现在我们把void去掉;则结构输出:

构造函数
The value of c :8

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157050.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql中使用什么语句创建索引_索引的创建方式有

    sql中使用什么语句创建索引_索引的创建方式有创建索引的sql语句是【CREATEINDEXindexNameONtable_name(column_name)】,这是最基本的索引,它没有任何限制。本文操作环境:windows10系统、mysql5.7、thinkpadt480电脑。创建索引的sql语句如下所示:下面是最基本的创建索引的语法,它没有任何限制。CREATEINDEXindexNameONtable_name(column_name)如果是CHAR,VARCHAR类型,length可以小.

    2022年9月6日
    2
  • pytharm激活码2021.9[最新免费获取]

    (pytharm激活码2021.9)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    62
  • Hmily(1)

    Hmily(1)1. Hmily是个高性能异步分布式事务TCC框架,具体包含SpringAOP,Disruptor,Dubbo等框架,当然还有其他的RPC框架。源码在https://github.com/yu199195/hmily,本文以duubo调用,mysql存储事务日志,kryo序列化为主,主要以下单支付减库存减余额为例,注解为Hmily,确认方法,取消方法和本次的tyr操作方法参数应该保持一致。前两个…

    2022年5月22日
    38
  • java软件开发工程师面试题_软件开发工程师面试题

    java软件开发工程师面试题_软件开发工程师面试题Java软件高级工程师笔试题【智力部分】(30分)1.烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(5分)两头同时烧2.4,4,10,10,加减乘除,怎么出24点?四个数字分别

    2022年8月5日
    2
  • python数组-1成员_python[1,2,3]*3

    python数组-1成员_python[1,2,3]*3使用python版本3.7首先先了解下python3.7中的下标,python下标有两套,一套是正的,一套是负的a=’python’中的python的下标可以如下组python正下标012345负下标-6-5-4-3-2-1对应位置的正下标-负下标=len(a)使用正下标时,下标i………………………

    2022年8月13日
    4
  • Java8学习笔记(一)–Lambda表达式

    Java8学习笔记(一)–Lambda表达式两个概念函数式接口函数式接口就是只显式声明一个抽象方法的接口。为保证方法数量不多不少,java8提供了一个专用注解,这样,当接口中声明的抽象方法多于或少于一个时就会报错。如下图所示:L

    2022年8月3日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号