子类调用基类的构造函数要用super();给基类初始化,这里的参数要怎么填呢?因为我觉得我现在操作的是派生类,基类初始化是否只是走走形式而已呀?我随便初始化一个值不可以吗?麻烦大家给菜鸟讲解下~谢谢哈其实我就是想问,如果父类是带参数的构造函数,那我子类的super参数是随便写吗?如:class A{public A(String name){N = new String(name);}……}class B extends A{public B(String aType){super(?)//这里填什么呢?随便填什么都可以吗?type = aType;}
3 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
再能随便写呢,super很简单,就是代表父类的意思,只有父类中有的,你才能用super,没有的你自然不能用。
而在这个程序中,你在子类的构造其中用super,那么,肯定是要继承父类的构造器public A(String name)
{
N = new String(name);
}
,也就是,你必须得给这个super()方法传入和父类构造方法一样的参数(name),所谓的一样,就是类型一样,而非名字一样。
最后要说明的是,你的程序漏洞百出,N是什么东西??type又是什么类型??哪来的type??super(?)后的分号呢?
慕标5832272
TA贡献1966条经验 获得超4个赞
不是走形式的。
你父类里面如果有了显示的带参数的构造函数。。那么子类默认情况调用父类的构造函数就不能使用了。这个时候就必须显示的调用父类的带参数的构造函数。
super()的参数得看你父类的构造函数。。
如果没有显示的写带参数的构造函数。。 那么你子类可以直接不用写。。jvm会在子类的构造函数第一行加一个隐式的super()
如果你父类没有不带参的构造函数。。那么你子类就必须在构造函数的第一行加入一个super(xxx,xxx,xxx,.....)
catspeake
TA贡献1111条经验 获得超0个赞
如果子类调用父类的构造函数有参数如果(int a,int b)那子类调用是就super(x,y)如此类推,调用的是没参数的那就直接用super() ,还有默认的调用是super()
添加回答
举报
0/150
提交
取消