我要创建一个名为Payable的接口,它有一个名为getPayableAmount的抽象方法,它返回一个double并且不带参数,我是否正确地执行了此操作?正确的做法似乎很简单。不应该有退货声明或什么?当我添加一个我有一个错误
public interface Payable
{
abstract double getPaymentAmount();
}
答案 0 :(得分:2)
您不需要在Interface方法中提供 abstract 关键字。 接口中的所有方法都是抽象方法。接口中不允许使用具体方法。
抽象类可以同时包含抽象方法和具体方法。在那种情况下,我们需要指定方法是抽象方法还是具体方法。
public interface Payable
{
double getPaymentAmount();
}
public abstract class Payable
{
//This is an abstract method. It has to be implemented by the extending class
abstract public double getPaymentAmount();
//This is a concrete method. It can be inherited by the extending class
private int CalucateSum(int a, int b)
{
return a+b;
}
}
答案 1 :(得分:1)
JLS说:
9.4抽象方法声明:
为了与旧版本的Java平台兼容,它是 作为一种风格问题,允许但不鼓励多余 为接口中声明的方法指定abstract修饰符。
您也不需要为接口方法指定public
。
请参阅documentation for Defining an Interface:
接口中的所有抽象,默认和静态方法都是 隐式
public
,因此您可以省略public修饰符。
public interface Payable
{
double getPaymentAmount();
}
您需要实现接口才能实际实现逻辑。例如:
public class PayableImpl implements Payable
{
double getPaymentAmount()
{
// actual implementation that returns the payment amount
}
}