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


相关推荐

  • git拉取代码如何解决冲突_Git工具-git pull拉取代码时冲突的解决办法[通俗易懂]

    git拉取代码如何解决冲突_Git工具-git pull拉取代码时冲突的解决办法[通俗易懂]一,在使用gitpull命令拉取代码时,有时会遇到以下错误信息:error:Yourlocalchangestothefollowingfileswouldbeoverwrittenbymerge:…Pleasecommityourchangesorstashthembeforeyoumerge.AbortingUpdating1d17a2c5..3de3e123可按以下步骤解决此问题:1.先将本地修改存储起来使用gitst

    2022年10月8日
    3
  • ora 01017问题解决办法

    ora 01017问题解决办法SQL>startup ORACLEinstancestarted. TotalSystemGlobalArea 914358272bytes FixedSize                 2088184bytes VariableSize            528483080bytes DatabaseBuffers         3774873…

    2022年6月1日
    41
  • Idea中的war和war explore有什么区别

    Idea中的war和war explore有什么区别我们发布项目时选择war还是war explore:war模式:将web工程以war包的形式上传到服务器 war exploed模式:将web工程以当前文件夹的位置关系上传到服务器war模式:先打成war包,然后再发布到Tomcat的ROOT下,所以选择这个后,你再看下你的tomcat的root文件夹下,是刚打成的项目war exploded模式:只编译,生成target;然后把当…

    2022年6月13日
    84
  • 加密原理详解:对称式加密 VS 非对称式加密[通俗易懂]

    加密原理详解:对称式加密 VS 非对称式加密[通俗易懂]一、前言在了解加密原理前,我们来看看这样一个故事。小红和小明是情侣,一天,小红给小明发短信说:“亲爱的,我银行卡上没有钱了,你给我转1万块吧。”有过上当受骗经历的人都知道这有可能是小偷偷了小红手提包,然后拿手机发的短信。不过我们小明学过加密原理,于是他回复说:“你直接拿我的银行卡刷吧,密码加上我们第一次约会的日期就是663156。”很明显,只有小明和小红知道他们第一次约会是什么时候,假设是2008年4月1号,那么小红就可以根据计算663156-200841=462315得到银行卡密码,就可以消费了。这

    2022年5月6日
    43
  • 如何将本地文件通过终端上传到linux服务器 /服务器/阿里云「建议收藏」

    如何将本地文件通过终端上传到linux服务器 /服务器/阿里云「建议收藏」scp-P端口c://xxxx.txtuser@ip:/home/root注意:-P大写-i公钥(我是将文件上传到阿里云)(1)在本地的终端下,而不是在服务器上。在本地的终端上才能将本地的文件拷入服务器。(2)scp-rlocalfile.txtusername@192.168.0.1:/home/username/其中,1)scp是命令,-r是参…

    2022年4月30日
    403
  • mysql 修改列为not null报错Invalid use of NULL value

    mysql 修改列为not null报错Invalid use of NULL value

    2021年10月21日
    62

发表回复

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

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