首页 > 其他 > 详细

动手动脑(10.14)

时间:2019-10-17 22:34:19      阅读:61      评论:0      收藏:0      [点我收藏+]

一、

public class Test{

  public static void main(String[] args) {
   Fool obj1=new Foo();
}
}
class Foo{
   int value;
   public Foo(int initValue){
    value=initValue;
}
}

以上代码无法通过编译,是因为类Foo是有参的,所以在引用的时候缺少参数。

结论:如果类提供了一个自定义的构造方法,将导致系统不再提供默认的构造方法。

 二、

public class InitializeBlockClass {
    {
        field=200;
    }
    public int field=100;
    public InitializeBlockClass(int value){
        this.field=value;
    }
    public InitializeBlockClass() {
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        InitializeBlockClass obj=new InitializeBlockClass();
        System.out.println(obj.field);
        obj=new InitializeBlockClass(300);
        System.out.println(obj.field);
        }
}

执行结果为

技术分享图片

 

结论:1、执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个排在前面。2、执行类的有参构造函数是就执行里面的语句。

三、静态初始化块的执行顺序:

1、静态初始化块只执行一次;2、创建子类的对象时,也会导致父类型的静态初始化块的执行

 

动手动脑(10.14)

原文:https://www.cnblogs.com/tianwenjing123-456/p/11695492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!