子类的构造函数可以覆写父类的构造函数吗?(反证法)

我们知道,在C++,C#,Java中,如果一个子类集成了一个非抽象的父类的话,

父类和子类中如果都有构造函数,子类的构造函数能覆写父类的构造函数吗?

答案肯定是不言而喻,当然不能覆写。

那么,我们只知其所以然,而不知其为什么所以然。因此我在这里分享我的理由。

总所周知,假设有两个类,父类Parent,子类Child,他们都是实体类。

那么,当实例化子类Child的时候,其会先调用父类的构造函数,先实例化父类,

然后在调用子类的构造函数,实例化子类。

Child ch=new Child();

好,现在问题来了,假设子类构造函数可以覆写父类的构造函数,那么换句话就是说,

父类的构造函数不能被执行。这个推论与上面的“当实例化子类Child的时候,其会先调用

父类的构造函数,先实例化父类,然后在调用子类的构造函数,实例化子类”的结论相互矛盾,

因此,证明了“子类的构造函数可以覆写父类的构造函数”的结论不成立。

你可能感兴趣的:(子类的构造函数可以覆写父类的构造函数吗?(反证法))