你好,请教下在super()里的参数是什么呢?

子类调用基类的构造函数要用super();给基类初始化,这里的参数要怎么填呢?因为我觉得我现在操作的是派生类,基类初始化是否只是走走形式而已呀?我随便初始化一个值不可以吗?麻烦大家给菜鸟讲解下~谢谢哈
其实我就是想问,如果父类是带参数的构造函数,那我子类的super参数是随便写吗?
如:
class A{
public A(String name)
{
N = new String(name);
}
……
}

class B extends A{
public B(String aType)
{
super(?)//这里填什么呢?随便填什么都可以吗?
type = aType;
}

呼如林
浏览 184回答 3
3回答

紫衣仙女

再能随便写呢,super很简单,就是代表父类的意思,只有父类中有的,你才能用super,没有的你自然不能用。而在这个程序中,你在子类的构造其中用super,那么,肯定是要继承父类的构造器public A(String name){N = new String(name);},也就是,你必须得给这个super()方法传入和父类构造方法一样的参数(name),所谓的一样,就是类型一样,而非名字一样。最后要说明的是,你的程序漏洞百出,N是什么东西??type又是什么类型??哪来的type??super(?)后的分号呢?

慕标5832272

不是走形式的。你父类里面如果有了显示的带参数的构造函数。。那么子类默认情况调用父类的构造函数就不能使用了。这个时候就必须显示的调用父类的带参数的构造函数。super()的参数得看你父类的构造函数。。如果没有显示的写带参数的构造函数。。 那么你子类可以直接不用写。。jvm会在子类的构造函数第一行加一个隐式的super()如果你父类没有不带参的构造函数。。那么你子类就必须在构造函数的第一行加入一个super(xxx,xxx,xxx,.....)

catspeake

如果子类调用父类的构造函数有参数如果(int a,int b)那子类调用是就super(x,y)如此类推,调用的是没参数的那就直接用super() ,还有默认的调用是super()
打开App,查看更多内容
随时随地看视频慕课网APP