我试图扩展一个抽象类,该抽象类实现了一种接口方法,因此在我的子类中,我试图实现接口中声明的其余方法,但是子类迫使我声明所有接口方法,请帮助我为了解决这个问题,在此先感谢我在下面添加了我的代码。预先感谢老年人。
我的代码
interface xxx
{
int numbers();
String names();
Double salary();
}
abstract class GetNames implements xxx
{
public String names()
{
return "Ravi";
}
}
class Check extends GetNames
//This class forcing me to implement names also
{
public int numbers()
{
return 3;
}
public double sal()
{
return 25000.00;
}
}
public class AbsUsingInterface {
}
答案 0 :(得分:1)
您只需要从Interface实现尚未在抽象类中实现的方法,抽象类是您尝试实现方法的类的超类。
但是看起来我在您的Check班上遇到了一个问题。
您的接口声明了此方法,
Double salary();
与在check类中一样,您正在实现此方法,
public double sal()
因此,这实际上并没有从接口实现方法。您需要使其与界面中的相同。
只需在Check类中使用make方法,
public Double salary()
{
return 25000.00;
}
在从超类/接口实现/重写方法时,应始终使用@Override批注,以防万一您的方法签名不同,它会在那里提示您输入错误。是的,如果您在Check的子类中再次声明names()方法,它将覆盖抽象类中的那个。您可以在您的类中执行类似的操作
abstract class GetNames implements xxx
{
@Override
public String names()
{
return "Ravi";
}
}
class Check extends GetNames
{
@Override
public int numbers()
{
return 3;
}
public double sal()
{
return 25000.00;
}
@Override
public Double salary() {
return sal();
}
@Override
public String names() { // this overrides names() method in GetNames class
return "Check";
}
}
答案 1 :(得分:0)
扩展abstract
类的具体类必须为超类中的所有抽象方法提供主体。
默认情况下,接口中的方法为abstract
,除非您提供默认正文。
当抽象类实现一个接口时,该接口的所有这些方法都照原样继承了
在您的方案中,为接口的一个继承方法提供了主体,该方法在'Abstract'类的范围内不再是抽象的。因此,如果一个类扩展了这个抽象类,则它不必为上述方法提供主体,因为它不再是抽象的(它们当然可以覆盖它)。
在您定义的Check
子类中出现错误,原因是不继承salary()
抽象类中已经定义的names()
方法,而不是GetNames
方法中的错误< / p>
答案 2 :(得分:0)
您的GetNames类正在实现xxx接口,但是您仅正在实现names() 您必须执行工资法。
doc
或者只是抛出NotImplementedException;