Java抽象方法

Java抽象方法,java,abstract-class,Java,Abstract Class,我对这里的关键词abstract有点困惑。我的编译器告诉我,对于抽象的方法,我不允许有一个主体。然而,我的任务是: 抽象方法orderDescription()返回一个字符串,给出特定顺序的详细信息 但是,正如我前面提到的,我的代码返回一个错误。所以我的问题是我该怎么解决这个问题 到目前为止,我刚刚删除了关键字abstract,效果很好 abstract String orderDescription() { return null; } 应该是 abstract String ord

我对这里的关键词
abstract
有点困惑。我的编译器告诉我,对于抽象的方法,我不允许有一个主体。然而,我的任务是:

抽象方法orderDescription()返回一个字符串,给出特定顺序的详细信息

但是,正如我前面提到的,我的代码返回一个错误。所以我的问题是我该怎么解决这个问题

到目前为止,我刚刚删除了关键字abstract,效果很好

abstract String orderDescription()
{
    return null;
}
应该是

abstract String orderDescription();
正如错误所说,抽象方法声明不应该包含任何主体

上面的语法要求实现(ever类扩展抽象类并提供实现)返回字符串

您不能实例化抽象类,所以某些类需要扩展抽象类并提供此抽象方法的实现

例如:

class MyabsClass 
{
  abstract String orderDescription();
}

class MyImplementation extends MyabsClass
{
   public String orderDescription()
    {
    return "This is description";
    }
}



 class MyClient
   {
     public static void main(String[] args)
      {
         MyImplementation imple = new MyImplementation();
         imple.orderDescription();
      }
   } 

本质上,抽象函数不应该包含任何细节,它是继承函数的占位符函数。正如Nambari所说,您应该只包含定义


当您希望一系列类都包含一个公共函数,并且希望每个子类都定义该函数时,可以使用该函数。

当您定义一个抽象方法时,您告诉编译器任何子类都必须提供一个实现(或者声明自己为抽象的)

在子类中实现抽象方法


记住,您不能自己创建抽象类的实例。抽象方法的全部要点是告诉编译器您希望子类提供功能。

抽象方法通常不应包含任何“真实”代码,抽象方法将被包含该方法的非抽象类覆盖。

抽象方法不应具有任何方法体。它只允许方法声明。

此外,在Nambari的示例中,您可以做的是

class MyabsClass 
{
  abstract String orderDescription();
}

 class MyClient
   {
     public static void main(String[] args)
      {
         MyabsClass mac = new MyabsClass(){
              public String orderDescription()
              {
                     return "This is description";
              }
         };
         mac.orderDescription();
      }
   }

也就是说,通过匿名类。

我理解,抽象方法不能有实体。但我应该返回一个字符串,所以如果我不能拥有一个身体,怎么会返回一些东西呢?@user1327636:理论更新了答案。稍后将提供一个示例。@user1327636,该职责被委托给继承此抽象方法的子类,但父类通过语言强制执行返回类型约束。@Nambari如果一个类包含抽象方法,则该类本身必须声明为抽象。MyabsClass必须定义为抽象类。这应该是答案。抽象类可以有代码,但不能实例化。抽象类必须是子类。
class MyabsClass 
{
  abstract String orderDescription();
}

 class MyClient
   {
     public static void main(String[] args)
      {
         MyabsClass mac = new MyabsClass(){
              public String orderDescription()
              {
                     return "This is description";
              }
         };
         mac.orderDescription();
      }
   }