子类继承父类的构造函数(方法)吗?

 我来答
雨晴世界

2015-07-13 · 用物理的观念理解世界
雨晴世界
采纳数:1313 获赞数:12368

向TA提问 私信TA
展开全部
1、根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。
2、由于构造函数非常特别,对它的调用就像是调用一个C函数一样,而不是利用对象来调用的。
3、可以看到,在Java中可以利用super关键字来访问本类父类的构造方法。这样在一定程度上也消除了歧异性
4、可以证明在Java中子类继承父类构造方法,并且子类可以通过super来访问父类的构造方法,只要父类的构造方法不是private。
魅影德孜859
2013-08-25 · 超过78用户采纳过TA的回答
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:75.3万
展开全部
最近我看见有人问过这个问题。在此我想表达一下自己的观点。 根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。那么既然是所有的那么本人认为也应当也包括构造函数(方法)。 我先举一个C++的例子:classParent{private:intp;public:Parent(void):p(0){}Parent(inti):p(i){}};classChild:publicParent{private:intc;public:Child(void):Parent( ),c(0){//在这里,创建Child对象时先构造父类域}Child(inti):Parent(i+1 ),c(i){//同上}}; 由于构造函数非常特别,对它的调用就像是调用一个C函数一样,而不是利用对象来调用的(若不先构造对象哪儿来的对象?)。因此鉴于这份特殊性我们可以这么考虑: 将上述代码中classChild:publicParent去掉: public Parent,我们可以编译试试,是否能成功。事实上正是因为Parent与Child有亲子关系,所以Child构造函数中可以调用Parent的构造函数先对其Parent域进行初始化。这个特点非常符合工程学详见我的文章《我比起Java更喜欢C++的理由语义》。 下面将贴出相应的Java代码:classParent{privateintp;publicParent(){p=0;}publicParent(inti){p=i;}}classChildextendsParent{privateintc;publicChild(){super();c=0;}publicChild(inti){super(i+1);c=i;}} 我们可以看到,在Java中可以利用super关键字来访问本类父类的构造方法。这样在一定程度上也消除了歧异性比如你也可以在Child类中的某一个方法中这么写:Parent p = new Parent();而利用super()就表示了子类在初始化本类域前先初始化其父类域。这也可以证明在Java中子类继承父类构造方法,并且子类可以通过super来访问父类的构造方法,只要父类的构造方法不是private。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式