java 构造函数是如何执行的「建议收藏」

java 构造函数是如何执行的「建议收藏」1.构造函数不是方法!!  原因1:方法的话,会直接执行方法体内的代码,但是构造函数首先执行的不是{}里的代码块,而是给对象的成员初始化;      2.方法可以被调用其他方法调用,但是构造函数不能被方法或变量调用。  packagecom.statics.www;publicclassSon{//构造函数执行第二步:privateintnum2=

大家好,又见面了,我是你们的朋友全栈君。

1.构造函数不是方法!!

   原因1:方法的话,会直接执行方法体内的代码,但是构造函数首先执行的不是{}里的代码块,而是给对象的成员初始化;

            2.方法可以被调用其他方法调用,但是构造函数不能被方法或变量调用。

  package com.statics.www;
public class Son {

//构造函数执行第二步:
private int num2=1*cal2();

//构造函数执行第一步:
public static int num1=1*cal1();

//构造函数第0步:
public static int cal1(){

System.out.println(“构造函数第一步:静态变量赋值!”);
return 1;
}

public static int cal2(){

System.out.println(“构造函数第二步:非静态全局变量赋值”);
return 2;

}

{

System.out.println(“构造函数第三步:代码块!”);
}

public Son(){

System.out.println(“构造函数第四步:执行构造函数内部代码块!”);
}

}

执行结果为:

java 构造函数是如何执行的「建议收藏」

2. 从上面测试得出结论:

构造函数初始化对象时,执行的顺序是  

0.方法优先存在于任何变量或者对象,存在于类中,而不是对象中。即构造对象前,方法就存在。

第一步. 静态变量赋值

第二步.代码块或者全局变量,(执行顺序由代码位置决定,如果代码块在前,优先执行代码块;如果变量在前,优先变量赋值)

第三步.执行构造函数内部代码



3.继承中的构造函数执行顺序:

     0.子类重写了父类的方法;

     1.调用父类构造函数();

      2.调用子类构造函数();

父类代码:

package com.statics.www;

public class Father {

private int num=1;
public Father(){

System.out.println(“构造father,接下来调用Test()”);
Test();
}

public void Test(){

System.out.println(“调用Father被重写的方法Test(),现在的Num值是”+num);
}

}

子类代码:

package com.statics.www;

public class Son extends Father {


private int num=1;
public Son(){

System.out.println(“执行Son构造函数内部代码块!”);
}

public void Test(){

System.out.println(“调用Son被重写的方法Test(),现在的Num值是”+num);
}

}

java 构造函数是如何执行的「建议收藏」

可以看出被调用的Test()方法是子类的Test(),另外特别注意Num   =0!!!!!!因为父类的num 是private的不能继承,但是子类的num还没有被赋值(要等到父类构造完成,才能构造子类),所以默认是0

    

   

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

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

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


相关推荐

  • java的pdf转永中_永中PDF转Word 免费转换不求人!

    java的pdf转永中_永中PDF转Word 免费转换不求人!原标题:永中PDF转Word免费转换不求人!PDF意为“便携式文档格式”,以易于传输与储存、方便阅读、高质感等优点越来越多被使用于办公、学习和科研中,PDF文件一般需要安装阅读器查看文件,有些阅读器页面上支持简单的批注操作,不过,如果想要对PDF文件内容进行编辑,那就比较麻烦了。有些用户把PDF的内容通过复制粘贴到Word文档中,格式、内容往往惨不忍睹,还有些小伙伴会下载PDF转Word的软…

    2022年4月30日
    44
  • java list对象转json_json转list对象集合

    java list对象转json_json转list对象集合1.使用Gson类中的toJson()方法Gsongson=newGson();StringlistToJsonString=gson.toJson(list);2.使用JSONArrayjson=JSONArray.fromobject(list);在调用json.toString()方法转换成字符串JSONArrayjsa=JSONArray.fromObject(list);Stringresult=jsa.toString();…

    2022年10月9日
    0
  • python encode和decode傻傻分不清楚「建议收藏」

    python encode和decode傻傻分不清楚「建议收藏」一、字符串和字节串的区别1、字符串:我们最常挂在嘴边的,”普通字符串“,是给人看的,在python中是str类型,str使用的是unicode编码,可通过encode()方法编码为字节串2、字节串:有时也叫“二进制字符串”,是给机器看的,在python中是bytes类型,bytes有编码格式,如utf-8(默认),gbk,可以通过decode()方法解码为字符串具体操作如下1、程序从文件或其他外部存储读取字节串内容,要将基解码为字符串,然后再内部使用2、程序完成处理,要把字符串写入文件

    2022年10月6日
    0
  • 微信小程序使用MQTT.js连接阿里云IoT物联网平台[通俗易懂]

    微信小程序使用MQTT.js连接阿里云IoT物联网平台[通俗易懂]前言最近公司要做物联网控制,觉得写app不能够兼容Android和iOS,于是选定了微信小程序来作为控制端,为了能够实时的监听到设备的状态变化,需要服务器能够主动推消息给小程序,一开始考虑了websocket,由服务器进行上报的数据监听,小程序使用websocket连接服务器接收消息,虽然能实现,但是加上业务逻辑之后就太复杂终归不好(因为服务器也是自己写–泪奔)于是想着,websocket既然…………………

    2022年8月31日
    8
  • qtablewidget设置高度_qtabwidget设置tab标题宽度

    qtablewidget设置高度_qtabwidget设置tab标题宽度setStyleSheet(“QTabWidget::pane{border-width:1px;border-color:rgb(48,104,151);\border-style:outset;background-color:rgb(132,171,208);\background:transparent;}\QTabWidget::tab-bar{border-width:…

    2022年9月23日
    0
  • Java String.replace()方法

    Java String.replace()方法用法实例教程,返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar声明以下是java.lang.String.replace()方法的声明public String replace(char oldChar, char newChar)参数oldChar — 这是旧的字符.newChar — 这是新

    2022年3月10日
    150

发表回复

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

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