use*_*515 0 java inheritance constructor
public class LawClient extends Client
{
boolean defendant;
String caseTopic;
LawClient (String n, boolean d)
{
name = n;
defendant = d;
}
LawClient (String n, boolean d, String c, String e)
{
name = n;
defendant = d;
caseTopic = c;
email = e;
}
public String determineStatus()
{
if(caseTopic == null)
{
return "none";
}
else
{
String s = "";
s += "defendant: " + defendant +"\n" + "CaseTopic: " + caseTopic;
return s;
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于lawclient构造函数我没有sutable构造函数我得到2个错误,但不知道我做错了什么或如何解决它.
这是超级类,所以你可以运行它或看它.
abstract class Client
{
protected String name;
protected double balance;
protected String email;
Client (String n)
{
name = n;
}
Client (String n, String e)
{
name = n;
email = e;
}
public String getName()
{
return name;
}
public double getBalance()
{
return balance;
}
public String getEmail()
{
return email;
}
public String setName(String a)
{
name = a;
return name;
}
public double adjustBalance(double b)
{
balance = b;
return balance;
}
public String setEmail(String e)
{
email = e;
return email;
}
public abstract String determineStatus();
public String toString()
{
String a = "";
a += "name: " +name + ("\n")+"Balance: " +balance + ("\n")+"Email: " +email + ("\n");
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
问题是构造函数如何在Java中为继承的类工作.如果未指定对父类的构造函数的调用,Java会自动在构造函数的顶部插入super()方法.
对于LawClient的以下构造函数:
LawClient (String n, boolean d)
{
name = n;
defendant = d;
}
Run Code Online (Sandbox Code Playgroud)
Java在尝试将n分配给name之前调用了super(),但是没有在Client类中匹配的构造函数.
如果你向Client类添加一个no-args构造函数,一切都应该工作:
Client () {
//no-args
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以在LawClient构造函数中调用正确的超类构造函数,如下所示:
LawClient (String n, boolean d)
{
super(n); // this will call the first constructor of the Client class
name = n;
defendant = d;
}
Run Code Online (Sandbox Code Playgroud)