摘要中的抽象方法派生类重写/实现抽象基类的抽象或具体方法。怎么样和为什么?

时间:2017-04-28 13:00:39

标签: java inheritance abstract-class override implements

遇到了有趣的继承/重写问题(取自here)。

Base和Derived类都是抽象的,并且

  1. 两者都有完全相同的抽象方法,或
  2. abstract Base具体方法,Derived声明SAME方法摘要。
  3. 我不明白为什么Eclipse IDE会在Derived

    中调用它
    1. implements(它在Derived中提供NO CODE / BODY!)
    2. 覆盖(也在Derived中提供NO CODE / BODY!)
    3. 代码段1:

      public abstract class Girl {
           abstract String getDescription();
      }
      
      
      abstract class GirlDecorator extends Girl {
             abstract String getDescription();  // implements Girl.getDescription() - says Eclipse IDE
      }
      

      代码段2:

      public abstract class Girl {
          String description = "no particular";
      
            String getDescription() {
                return description;
            }
      }
      
      abstract class GirlDecorator extends Girl {
             abstract String getDescription();  // overrides Girl.getDescription() - says Eclipse IDE
      }
      

1 个答案:

答案 0 :(得分:0)

在Java中有两种类型的方法(非静态)

  1. Virtual - Normal方法,必须在基类中实现,但可以通过继承覆盖。

  2. Abstract - 未在基类中实现但在派生类中实现的方法。

  3. 因此包装它,虚拟方法不在派生类中实现,它们在基类中实现,并且可以由派生类重写。 抽象方法未在基​​类中实现,它们在派生类中实现。