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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wxpython 教程 pdf_活学活用wxPython 完整版PDF

    wxpython 教程 pdf_活学活用wxPython 完整版PDF我们将《活学活用wxPython》分成了三个部分。第一部分简要介绍wxPython的相关概念,并指导读者开始运用wxPython,同时还提供了一些wxPython最佳实践的信息。第一部分的章节包括:第一章欢迎使用wxPython在该章节中,我们对wxPython进行介绍,并解释为什么说它是自切片面包以来最伟大的事务,同时还提供了用于创建wxPython的一些技术背景资料。第二章给wxPyth…

    2022年5月21日
    34
  • 触摸事件 touchstart、touchmove、touchend

    触摸事件 touchstart、touchmove、touchend目录触摸事件触摸事件编码触摸手指个数分析触摸目标DOM元素分析触摸位置分析触摸事件HTML5中,PC端基于鼠标的界面互动主要是单击,移动端界面交互方式主要是触摸。移动端浏览器触摸事件事件名称 描述 是否包含touches数组 touchstart 触摸开始,多点触控,后面的手指同样会触发 是 touchmove …

    2022年6月19日
    38
  • laravel之跨域请求(一)「建议收藏」

    laravel之跨域请求(一)「建议收藏」laravel之跨域请求(一)

    2022年4月24日
    48
  • pip 离线安装包方法_pip安装包下载

    pip 离线安装包方法_pip安装包下载环境:pip19.0.3windows7x64pip下载第三方包举个栗子:pip离线安装举个栗子:本文介绍的是最简单直接的用法,用于快速解决工作时的问题。更多复杂高深用法学习见pip

    2022年8月4日
    34
  • tomcat部署war包出错解决方案

    tomcat部署war包出错解决方案tomcat部署war包出错解决方案,最最简单直接明了的方法,卸载重新再装一遍笔者重装了56遍算是整好了,写篇博客,希望你萌,少走弯路。这是我走的弯路https下载,安装,配置及部署war包出错解决方案1.jdk的安装及配置2,tomcat安装配置3.部署war包3.1将war包放入Tomcat中3.2修改server.xml4启动tomcat4.1war包的数据库密码与本地数…

    2022年6月8日
    104
  • 人工智能猴子摘香蕉实验报告_猴子和香蕉问题

    人工智能猴子摘香蕉实验报告_猴子和香蕉问题哈工大人工智能实验

    2022年9月26日
    4

发表回复

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

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