对于任何派生的类对象,我们需要保证private基础类成员都得到了正确的初始化
这句话怎么理解?既然是private,那么派生类就没有将这些成员继承下来,干嘛还要初始化它们?
在派生类的构造方法执行前先执行基类的构造方法,如果没有初始化private基类成员对派生类的构造方法有什么影响?
这句话怎么理解?既然是private,那么派生类就没有将这些成员继承下来,干嘛还要初始化它们?
在派生类的构造方法执行前先执行基类的构造方法,如果没有初始化private基类成员对派生类的构造方法有什么影响?
答: 没有影响。“对于任何派生的类对象,我们需要保证private基础类成员都得到了正确的初始化”, 看就是翻译的啊,晦涩...如果要保证"private基础类成员都得到了正确的初始化", 那也是父类自己的事情;跟子类无干。
构造方法执行的顺序是先会调用直接父类的构造(一般默认为无参的,也可指定具体的构造)这是一个上溯的过程直到object结束
java会自动为没有初始值的数据成员按照其类型赋默认值,初始化只是按照程序员的意愿给数据成员赋初值这样理解对不对?既然这样所谓的正确与否实际上指的就是是否符合程序员的意愿而不是真正意义上的错误?
是,如果说子类构造方法第一句并不是调用父类构造方法,就有可能违背编写父类的程序员的意志,当然,这只是一种可能性,这当然不能算错误,因为编译通得过,运行也不会出异常,但是Java的设定不允许这种可能存在,于是把这个划入了编译错误里面,这是一种严谨的态度。