我正在计算机科学课上学习继承。 我也很困惑,为什么我的代码不起作用。 这是教授提供的代码:
public class Store{
public final double SALES_TAX_RATE = 0.05;
private String name;
public Store(String name){
setName(name);
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String toString(){
return "Name: "+ name;
}
}
分配要求我们创建Web商店具有以下附加属性:Internet地址和编写网站的编程语言。编写新类的构造函数和toString方法。
这正是我所做的,但是我的代码不起作用:
public class WebStore extends Store
{
String Link;
String Lang;
public WebStore(String Link, String Lang)
{
this.Link = Link;
this.Lang= Lang;
}
public void setLink( String Address )
{
Link = Address;
}
public String getLink()
{
return Link;
}
public void setLang( String Language )
{
Lang = Language;
}
public String getLang()
{
return Lang;
}
}
这是我得到的错误: WebStore.java:9:错误:构造函数Store类中的Store不能应用于给定的类型; { ^ 必需:字符串 发现:没有争论 原因:实际和正式的参数列表长度不同
为什么我会收到此错误,我的代码看起来也是如此?我很抱歉,如果这是一个愚蠢的问题,但我是java的新手
答案 0 :(得分:4)
这实际上是一个非常简单的修复方法。您必须在 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
mywebview=(WebView)findViewById(R.id.abc);
WebSettings webSettings=mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
mywebview.loadUrl(getIntent().getStringExtra("data"));
// ^^^^^
mywebview.setWebViewClient(new WebViewClient());
}
课程中加入super()
来电。我建议您将WebStore
构造函数更改为以下内容:
WebStore
这必须在Java中完成,因为如果扩展具有构造函数的类,则必须使用所需的参数调用public WebStore(String name, String Link, String Lang) {
super(name);
this.Link = Link;
this.Lang= Lang;
}
。
答案 1 :(得分:2)
您的WebStore
必须有一个名字。因此,当您构建它时,您必须传递一个名称:public WebStore(String Link, String Lang, String name)
。
然后,您可以使用name
参数调用父类的构造函数:super(name);
。请注意,这必须是构造函数的第一个语句。
想象一下,建造一座更大的建筑物:你的Store
代表基础,WebStore
是一个满堂红。通过调用super(...);
,您可以确保构建对象的“骨架”。
最后,你将拥有:
public WebStore(String Link, String Lang, String name)
{
super(name); // construct the skeleton with this parameter!
this.Link = Link;
this.Lang= Lang;
}
另外,您应该考虑遵循Java常规符号:变量名称应以小写字母开头。
答案 2 :(得分:1)
在扩展Store时,需要调用Store构造函数,在这种情况下需要提供商店名称。
在java中,您可以使用super(),
调用超类public WebStore(String name, String Link, String Lang)
{
super(name);
this.Link = Link;
this.Lang= Lang;
}
答案 3 :(得分:-1)
在Java中,构造函数始终调用其父级构造函数。 无参数构造函数通常称为“默认构造函数”。
您的[-2,-2,1,6,9,9]
类只有一个构造函数,它有一个agrument:Store
。
因此,您的name
构造函数应该调用其父级构造函数,为WebStore
提供值。像这样:
name