我们知道,在C++,C#,Java中,如果一个子类集成了一个非抽象的父类的话,
父类和子类中如果都有构造函数,子类的构造函数能覆写父类的构造函数吗?
答案肯定是不言而喻,当然不能覆写。
那么,我们只知其所以然,而不知其为什么所以然。因此我在这里分享我的理由。
总所周知,假设有两个类,父类Parent,子类Child,他们都是实体类。
那么,当实例化子类Child的时候,其会先调用父类的构造函数,先实例化父类,
然后在调用子类的构造函数,实例化子类。
Child ch=new Child();
好,现在问题来了,假设子类构造函数可以覆写父类的构造函数,那么换句话就是说,
父类的构造函数不能被执行。这个推论与上面的“当实例化子类Child的时候,其会先调用
父类的构造函数,先实例化父类,然后在调用子类的构造函数,实例化子类”的结论相互矛盾,
因此,证明了“子类的构造函数可以覆写父类的构造函数”的结论不成立。
本文探讨了在C++、C#及Java等面向对象语言中,子类构造函数是否能够覆写父类构造函数的问题,并给出了明确的答案:不可以。通过实例说明了构造函数的执行顺序,解释了为何子类无法覆写父类构造函数。
&spm=1001.2101.3001.5002&articleId=82293661&d=1&t=3&u=5ae1d01326684beabfa2fbabab00677f)
977

被折叠的 条评论
为什么被折叠?



