Java 使用抽象方法创建接口

Java 使用抽象方法创建接口,java,interface,return,double,abstract,Java,Interface,Return,Double,Abstract,我要创建一个名为payment的接口,该接口有一个名为getPayableMount的抽象方法,该方法返回一个double并且不带任何参数,我这样做正确吗?要做到正确似乎很简单。难道不应该有一个返回声明或什么吗?当我添加一个时,我得到了一个错误 public interface Payable { abstract double getPaymentAmount(); } 您不需要在接口方法中提供abstract关键字。 接口中的所有方法都是抽象方法。接口中不允许使用具体方法 抽象

我要创建一个名为payment的接口,该接口有一个名为getPayableMount的抽象方法,该方法返回一个double并且不带任何参数,我这样做正确吗?要做到正确似乎很简单。难道不应该有一个返回声明或什么吗?当我添加一个时,我得到了一个错误

public interface Payable 
{
  abstract double getPaymentAmount();



}

您不需要在接口方法中提供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;
    }
}

您不需要在接口方法中提供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;
    }
}
他说:

9.4抽象方法声明:

为了与旧版本的Java平台兼容,它是 作为一种风格,允许但不鼓励冗余 为接口中声明的方法指定抽象修饰符

您也不需要为接口方法指定
public

见:

接口中的所有抽象、默认和静态方法都是 隐式地
public
,因此可以省略public修饰符

您需要接口的实现来实际实现逻辑。例如,类似这样的事情:

public class PayableImpl implements Payable 
{
  double getPaymentAmount() 
  {
     // actual implementation that returns the payment amount
  }
}
他说:

9.4抽象方法声明:

为了与旧版本的Java平台兼容,它是 作为一种风格,允许但不鼓励冗余 为接口中声明的方法指定抽象修饰符

您也不需要为接口方法指定
public

见:

接口中的所有抽象、默认和静态方法都是 隐式地
public
,因此可以省略public修饰符

您需要接口的实现来实际实现逻辑。例如,类似这样的事情:

public class PayableImpl implements Payable 
{
  double getPaymentAmount() 
  {
     // actual implementation that returns the payment amount
  }
}

接口中的方法已经是抽象的。您可以使用
default
方法在接口中添加一些实现,但这仅在您使用Java8时可用:接口中的方法已经是
抽象的
。您可以通过使用
default
方法在接口中添加一些实现,但这仅在使用Java8时可用:方法签名确实不需要
public
修饰符。所有接口方法都隐式地
public
。这是正确的。接口中的私有方法根本没有用处。如果我们需要实现一个接口,它应该在接口中是公共的。:)如果你在写Java 8,接口头就需要它,然后,现在需要
abstract
关键字,因为新的Java 8+接口现在可以包含
static
default
方法,而
default
方法可能不需要在具体的
类中实现,因此@Bimzee需要更新~@Jose Mhlanga:在Java 8之前,接口没有默认方法。从Java 8开始是的,我也同意。在技术领域,定义将不时更新。感谢您的指点。方法签名确实不需要
public
修饰符。所有接口方法都隐式地
public
。这是正确的。接口中的私有方法根本没有用处。如果我们需要实现一个接口,它应该在接口中是公共的。:)如果你在写Java 8,接口头就需要它,然后,现在需要
abstract
关键字,因为新的Java 8+接口现在可以包含
static
default
方法,而
default
方法可能不需要在具体的
类中实现,因此@Bimzee需要更新~@Jose Mhlanga:在Java 8之前,接口没有默认方法。从Java 8开始是的,我也同意。在技术领域,定义将不时更新。感谢您的指点。对于任何想知道的人,不鼓励写“抽象”或“公共”,因为这句话意味着如果用户省略了接口中的方法,它们就不能是抽象的或公共的。对于任何想知道的人,不鼓励写“抽象”或“公共的”正如这句话所暗示的那样,如果用户省略了接口中的方法,那么这些方法就不能是抽象的或公共的。