问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java建构函式能否被继承,为什么?

发布网友 发布时间:2023-06-23 12:06

我来回答

1个回答

热心网友 时间:2023-10-10 20:13

java建构函式能否被继承,为什么?
不能,因为子类继承父类的时候,先执行父类建构函式;具体的说就是执行父类时就会先“呼叫”父类的建构函式,注意“呼叫”和继承不是一个含义,实质上是“自动执行”。

继承(extends)的含义其实是“扩充套件”,子类完全没必要扩充套件父类的建构函式,因为反正每次调子类的时候都会“自动执行”它父类的建构函式,如果真的需要子类建构函式特殊的形式,子类直接修改或过载自己的建构函式就好了。

估计是你龚“建构函式”的意义本身不理解,“呼叫”一个类有“继承”和“组合(说白了new 一个类)”两种方式,当你“呼叫”一个类的时候就会“自动执行”它的“建构函式”。
java中,子类能不能继承父类的构造方法??
你老师是对的,不过一下子说不清楚。给你个例子。

class A{

public A(){} 1:无引数构造方法。

public A(String s){} 2.

}

class B extends A{

public B(String s){

super(s); 3.

}

}

说明:如果没有1处的无引数构造方法,那么3处一定要主动呼叫父类带引数的构造方法。

如果有1处的构造方法,那么3处程式码可以不要,因为Java会自动预设呼叫父类的无引数构造方法。

记住一点:在构造子类时,一定会呼叫到父类的构造方法。

所以父阀要么有一个预设的无引数构造,这样Java会自动呼叫这个无引数的构造。如果父类没有无引数的构造,那么就要你自己在子类的构造中,通过super()的方式呼叫父类的构造。
java的继承中的构造方法
java继承中对建构函式是不继承的,只是呼叫(隐式或显式)。

举例说明:

public class FatherClass {

public FatherClass() {

System.out.println(100);

}

public FatherClass(int age) {

System.out.println(age);

}

}

public class SonClass extends FatherClass{

public SonClass() {

}

public SonClass(int c) {

抚 System.out.println(1234);

}

public static void main(String[] args) {

SonClass s = new SonClass(66);

}

}

编译后执行结果如下:

分析:SonClass s = new SonClass(66);

执行这句时,呼叫

public SonClass(int c) {

System.out.println(1234);系统会自动先呼叫父类的无参建构函式(super())

}

在这个建构函式中,等价于

public SonClass(int c) {

super();必须是第1行,否则不能编译

System.out.println(1234);

}

所以结果是 100 1234

在建立子类的物件时,Java虚拟机器首先执行父类的构造方法,然后再执行子类的构造方法。在多级继承的情况下,将从继承树的最上层的父类开始,依次执行各个类的构造方法,这可以保证子类物件从所有直接或间接父类中继承的例项变数都被正确地初始化。

3.如果子类建构函式是这样写的

public SonClass(int c) {

super(22);必须是第1行,否则不能编译

显式呼叫了super后,系统就不再呼叫无参的super()了;

System.out.println(1234);

}

执行结果是 22

1234

总结1:建构函式不能继承,只是呼叫而已。

如果父类没有无参建构函式

建立子类时,不能编译,除非在建构函式程式码体中第一行,必须是第一行显式呼叫父类有参建构函式

如下:

SonClass (){

super(777);显示呼叫父类有参建构函式

System.out.println(66);

}

如果不显示呼叫父类有参建构函式,系统会预设呼叫父类无参建构函式super();

但是父类中没有无参建构函式,那它不是不能呼叫了。所以编译就无法通过了。

总结2:建立有参建构函式后,系统就不再有预设无参建构函式。

如果没有任何建构函式,系统会预设有一个无参建构函式。...
建构函式可以继承吗?
建构函式是可以继承的

但是建构函式不能被显示的呼叫的

,由于你的有引数要传递所以要这样呼叫才行

#include

class A

{

public:

A(int &x)

{

s=x;

}

int getS()

{

return s;

}

private:

int s;

};

class B:public A

{

public:

B::B(int x):A(x)

{}

void print()

{

cout<

}

};

void main()

{

B b(2);

b.print();

}

你可以用一个PRINTF语句去测试他们的执行的
java中一个子类是否可以继承父类的构造方法
构造方法不会被继承,当子类例项化时会自行先去找父类构造方法,之后再找自身构造方法。程式码说明(java为例)

父类class person{ public person { 父类构造方法 System.out.println("我是父类无参构造方法"); }}public class student extends person{ public static void main(String[] args) { 例项化student student stu1 = new student(); }}执行上述程式码,在控制台输出:我是父类无参构造方法
关于继承构造方法的问题
子类继承父类的话,当子类被实力化就会去呼叫父类的预设构造方法.这是不可改变的.如果你不想显示这些值,就把预设的构造方法里的程式码都去掉.

另一种情况就是,你在实力化的时候传一些引数进去,就不会呼叫预设的构造函数了.前提是你传的引数要有相应的建构函式来匹配.

如果又想呼叫预设的建构函式的话,就用super();
java中子类不写构造方法而父类写构造方法,子类继承了父类哪个构造方法?
您好,提问者: 太不专业了,构造方法怎么会存在继承?

不写预设的有个隐士的构造方法,举个例子吧:

class A{ void add();}public class B extends A{ public B(){ super(); 这个super也是隐士的。 }}如何知道有个预设的super()呢?看下面程式码class AA{ public AA{ System.out.println("super()"); }}public class BB extends AA{ public static void main(String[] args){ new BB(); 输出super(); }}
继承关系下,构造方法的呼叫规则有哪些?
第一个规则:子类的构造过程中,必须呼叫其父类的构造方法。一个类,如果我们不写构造方法,那么编

译器会帮我们加上一个预设的构造方法,所谓预设的构造方法,就是没有引数的构造方法,但是如果你自己写

了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类物件的时候,肯定呼叫了子类的构

造方法,但是在子类构造方法中我们并没有显示的呼叫基类的构造方法,就是没写,如:super(); 并没有这样

写,但是这样就会呼叫父类没有引数的构造方法,如果父类中没有没有引数的构造方法就会出错。

第二个规则:如果子类的构造方法中没有显示的呼叫基类构造方法,则系统预设呼叫基类无引数的构造方

法注意:如果子类的构造方法中既没有显示的呼叫基类构造方法,而基类中又没有预设无参的构造方法,则编

译出错,所以,通常我们需要显示的:super(引数列表),来呼叫父类有引数的建构函式。
java父类的构造方法为什么不能被子类继承
子类=父类﹢新增的变数﹢新增的方法。物件语言的构造器作用在于对类建立例项物件时完成物件的初始化工作(为变数申请记忆体空间等)

因此,子类川构造器除了承担著初始化子类的新增变数和方法,还要初始化父类自身新增加的变数和方法。一般来说,如果在子类的构造器中没有使用super()呼叫父类相应的构造器,子类的构造器会自动呼叫父类预设的,也就是不带引数的构造器来初始化父类的东西。

而Java类的预设构造器,当你没有为你写的类建造构造器的时候,Java会自动帮你建立这个预设构造器,但是当你自己编写了构造器后,你自己编写构造器将会覆盖掉预设的构造器,就是说预设的构造器不存在。那么这个时候,你在继承的子类里面没有显示新增super()函式呼叫你在父类里编写的父类构造器,子类的构造器将不能自动找到父类的构造器。找不到父类的构造器意味着什么?意味着你的子类例项化的时候找不到父类的构造器来初始化父类的东西,不能完成类例项物件的初始化工作,你说你的子类能不出现错误?!

所以,在子类的构造器中需不需要新增super()呼叫父类相应的构造器,只需要考虑子类的构造器才初始化的时候能不能完成所有变数和方法的初始化就可以了。另外,根据自己初始化工作的需要使用super()呼叫相应的父类构造器来初始化也是有必要的。

所以你所说的子类不能继承父类构造器,这说明你没有显式的呼叫seper(),而且父类构造器被你的子类覆盖或呼叫的父类中没有无参构造器所引起的。
Java继承中的构造方法问题
你好,很高兴为你解答。

这段程式码提示B的建构函式错误。这是因为B继承A,B的建构函式会自动呼叫A的预设建构函式(即不带引数的建构函式),但A没有定义预设建构函式,所以就会报错。有两种改法:

1)在A中增加预设建构函式。如下:

class A {

int a;

String name;

String sex;

A(){ 修改这儿

}

A(int a, String name, String sex) {

this.a = a;

this.name = name;

this.sex = sex;

}

void ShowMess() {

}

}

class B extends A {

int age;

B(int a, String name, String sex, int age) {

this.a=a;

this.name=name;

this.sex=sex;

this.age=age;

this.age = age;

}

void ShowMess() {

System.out.println("a+name+sex+age");

}

}

2)修改B的建构函式,显式地呼叫A的非预设建构函式。如下:

class A {

int a;

String name;

String sex;

A(int a, String name, String sex) {

this.a = a;

this.name = name;

this.sex = sex;

}

void ShowMess() {

}

}

class B extends A {

int age;

B(int a, String name, String sex, int age) {

super(a,name,sex); 修改这儿

this.age = age;

}

void ShowMess() {

System.out.println("a+name+sex+age");

}

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
若cpu一秒执行n次运算需耗能5w,那执行2n次运算要耗能是大于小于还是等于... 大神们,N5G跟N5W哪里不一样? 刚出生的婴儿会感冒吗 刚出生宝宝感冒的症状 怀庄永佳福代理,什么品牌白酒好呢? 做白酒品牌代理,有怀庄永佳福牌子怎么样? 怀庄永佳福白酒喝得人多吗?代理怎么样? 为什么很多女性都把男闺密当作结婚对象? 关于电影“罗生门”的问题 实际利率法是指什么 如何做好westernblot 有什么小本的生意可以在夏天摆地摊? 冰粉好久能卖出去200碗 古代房子长有什么寓意吗 长江沪铜什候开始上涨 求技术分析高手!分析期货沪铜1109今年六月份以来的走势,说明哪时宜买进或卖出?建仓和持仓的原因和时间 钓鱼人要知道的国家保护鱼类 长江上游珍稀特有鱼类国家级自然保护区的保护对象 自私和三观不同的区别 梦见鲸鱼是什么意思?做梦梦见鲸鱼好不好 Photoshop中点击&quot;文件&quot;--&gt;&quot;新建&quot;,弹出一个窗口,其中的颜色模式选不同的选项会有什么不同? photoshopcs中,色彩模式不包含 家风家训家规内容怎么写(家风家规家训主要内容家规家训范本) 淼字潦草怎么写好看 番茄电影是不是盗版 防晒霜最高多少倍 防晒霜用多少倍数的比较好 同养和标养有什么区别 标养和同养有什么区别 足球比赛90+8什么意思 FM97 早8点到9点的节目时光点唱机 主持人于霞 芳芳 这个节目的背景音乐是个英文歌曲,叫什么名字 英超和意甲哪个厉害 西甲,意甲,英超哪个联赛的水准相对高 正餐 &#160;&#160;[zhèng cān]什么意思?近义词和反义词是什么?英文翻译是什么? 直肠前突都有哪些危害呢 放屁为什么会响 梦见饭筷子的预兆 坦克世界弱点插件的颜色代表什么? 梦见白色的筷子的预兆 坦克世界那个白圈是什么插件 玩坦克世界正准备开炮的时候准星出现白圈,就失控 喜欢说得嘞是哪里人 眼皮为什么一直跳 探究眼皮跳动的原因与解决方法? 钻戒证书上面备注的印记:d0.30ct是什么意思 眼睑痉挛是什么?怎么和干眼症区分? 眼睑痉挛和干眼症有什么区别? 丰南游乐园里那个有旋转木马 温州游乐园里有什么游乐项目 planetcrafter建造不了东西 怪物的世界 破解版闪退解决方法