Java 子类调用父类的构造函数

是这样的,有AextendsB,其中A没有构造函数,B有无参构造函数,那么当newA()时,会调用父类的这个无参构造函数吗?如果会,是什么原因呢,谢谢... 是这样的,有A extends B,其中A没有构造函数,B有无参构造函数,那么当new A()时,会调用父类的这个无参构造函数吗?如果会,是什么原因呢,谢谢 展开
 我来答
sky不用太多sky
高粉答主

2018-03-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:1082
采纳率:97%
帮助的人:47.5万
展开全部

先小小纠正一下,java里面一般不叫函数,叫方法,这是Java的一个小习惯。

你这个问题原因很简单。

首先,任何类都有构造方法,难怕是你不写,也会默认你有一个有无参构造方法。,所以你的A里面就会有一个叫A()的构造方法。

当你new A()时,默认你有一个有无参构造方法A()的方法里的第一句,会自动加上一个super();的方法,这句就是调用父类构造方法的意思,这是java规定的规则。

你可以尝试一下,在A里写一个构造方法:

A(){

super();   //这个一定要放在第一句

System.out..XX;

}

这与你不写super()这句效果是一样的,因如果没写,java会默认在第一句加上super。

1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;

2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;

3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;

4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;

5.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)

6.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。[1] 

7.在Python中构造函数必须通过重写__init__方法实现

cs6641468
推荐于2017-09-25 · TA获得超过5713个赞
知道大有可为答主
回答量:863
采纳率:100%
帮助的人:988万
展开全部
先小小纠正一下,java里面一般不叫函数,叫方法,这是Java的一个小习惯。
你这个问题原因很简单。
首先,任何类都有构造方法,难怕是你不写,也会默认你有一个有无参构造方法。,所以你的A里面就会有一个叫A()的构造方法。
当你new A()时,默认你有一个有无参构造方法A()的方法里的第一句,会自动加上一个super();的方法,这句就是调用父类构造方法的意思,这是java规定的规则。
你可以尝试一下,在A里写一个构造方法:
A(){
super(); //这个一定要放在第一句
System.out..XX;
}
这与你不写super()这句效果是一样的,因如果没写,java会默认在第一句加上super。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ciel_bing
2011-07-28 · 超过18用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:28万
展开全部
子类调用父类的构造函数就是调用的无参构造函数,很正常.
如果父类没有构造函数,就会自动生成一个无参的构造函数,子类也可以调用.

重点是: 子类默认调用的是 无参 的构造函数,不是 默认 的构造函数.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
导僖傥缴粟赫9G
2011-07-28
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
会,子类中没有构造方法,但是会默认给它一个无参构造方法,这其中在执行时,会首先执行super(),调用父类的构造方法。你可以了解下super的调用机制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jcj0741
2011-07-28
知道答主
回答量:13
采纳率:0%
帮助的人:4.9万
展开全部
会,因为子类中不写构造会有隐式无参构造,但是在执行子类构造之前,会先通过空白行调用父类构造.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式