微明明微
2020-02-21 11:41
采纳率: 100%
浏览 478
已采纳

求解:java构造方法里面是空的时候,初始化对象过程是怎么样的?

java构造方法里面是空的时候,为什么能初始化对象?
空的时候是不是就是表面上我们看着是空的,实际上执行了类的语句?
如果执行了类的语句,执行了哪些类的语句?
为什么没有任何教程,没有讲解到没有内容时候的执行逻辑。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • blownewbee 2020-02-21 11:44
    已采纳

    构造函数为空,在此之前还可能执行的包括(按照执行顺序)
    基类的构造函数
    本类的静态构造函数
    初始化字段语句,比如 private int count = 1;
    初始化块,比如写在类里面的 { } 的内容

    很多书都有介绍,你说没有教程应该是你读书少的缘故。


    构造函数除了初始化对象,还可以增加别的逻辑
    比如

    class MyDate
    {
    public int year = 1900;
    public int month = 1;
    public int day = 1;
    private MyDate() { }
    public MyDate(int y, int m, int d)
    {
    year = y;
    month = m;
    day = d;
    }
    public MyDate(String datestr)
    {
    String arr = datestr.split("-");
    year = Integer.parseInt(arr[0]);
    month = Integer.parseInt(arr[1]);
    day = Integer.parseInt(arr[2]);
    }
    }
    
    

    这里每个构造函数都不能省略,初始化语句也不能省。
    虽然无参数构造函数没有代码,但是它封闭了构造函数,使得不能直接创建。
    String的构造函数,内部实现了转换,这个逻辑,用静态初始化块和直接初始化(无参数)都是实现不了的。

    只有一种特例,构造函数和直接初始化成员可以互换,那就是成员的初始值是不依赖任何参数的,是固定的,并且构造函数只是给这些成员初始值,不需要参数。

    点赞 评论

相关推荐 更多相似问题