为什么this和super不能同时出现在一个构造函数里面

 我来答
娱乐小八卦啊a
高粉答主

2019-10-31 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117830

向TA提问 私信TA
展开全部

this()和super()是不可以同时出现在同一个构造函数中的。

原因如下:创建一个子类的实例时,首先会调用父类的构造函数,然后再调用子类的构造函数,如果父类中没有缺省构造函数,则必须再子类的构造函数中显示的调用它(如下面的例子),

在程序中的顺序是这样的:

super(...) //父类构造函数

.....        //当前类构造函数语句

同样的道理,当一个类中有多个构造函数的时候,在其中一个构造函数中也可以先调用其他的构造函数来初始化对象,这种方法叫做“显式构造方法调用”,当那样的构造方法被调用,它将执行通常的super() 过程以及后续的操作。

然后在执行本构造函数中的构造语句,这个时候的顺序是这样的:

this(....)     //当前类的其他构造函数

...         //当前构造函数的其他语句

扩展资料

this对象是谁取决于函数被调用的方式,在JavaScript中,函数具有四种调用方式:

1、直接调用,此时函数中的this在ES3/ES5非严格模式下为全局对象,在浏览器中即为window;

2、某个对象的方法调用,这时this指这个上级对象;

3、作为构造函数调用;

4、apply调用

apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象,因此this指的就是这个第一个参数。apply()参数为空时,默认调用全局对象,所以这时的运行结果为0,此时,this为全局对象。

参考资料来源:

百度百科——this关键字

百度百科——super (超类)

就烦条0o
2017-09-01 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46487
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
java规定,在执行构造函数之前必须执行父类的构造函数,直到这个类是java.lang.Object类的构造函数。
然而函数的入口是子类构造函数,因此任何构造函数第一句必须是执行父类构造函数,如果没有添加super关键字,那么编译器会为该构造函数第一句添加一个super()语句(你可以这么理解,当然编译以后并不是这样)。如果有super关键字显示的调用父类构造函数,就是用指定的那个父类构造函数,否则使用默认的无参数构造函数。也有一种情况例外,就是存在this关键字,调用本类其它构造函数,但是按照递归调用,最终还是会调用父类构造函数。
如果你继承的父类没有无参数构造函数,那么你这个类第一句必须显示的调用super关键字来调用父类对应的有参数构造函数,否则不能通过编译。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式