【问题标题】:What is the purpose of an abstract method?抽象方法的目的是什么?
【发布时间】:2012-03-22 07:22:26
【问题描述】:
abstract public class car 
{   
    abstract void drive();
}

和上面的sn-p代码一样,Java中抽象方法的目的到底是什么?据我所知,根据定义,他们不允许拥有身体。

【问题讨论】:

  • 对不起...我的投票结束不正确。

标签: java polymorphism overriding abstract


【解决方案1】:

强制任何继承自它的非抽象类实现该方法,类似于接口。

【讨论】:

    【解决方案2】:

    抽象方法应该在这个抽象类的子类中实现。例如,您的类名为Shape,它有一个draw() 方法。你不能为Shape 类实现这个方法,因为你真的不知道如何绘制Shape,所以你让它abstract。当您创建扩展 ShapeTriangle 类时 - 您确定如何绘制 Triangle 并且可以实现 draw() 方法。希望这会有所帮助。

    【讨论】:

    • 这是一方面。另一个是对一般形状有一些了解。例如,如果您将几个放入某种集合中。无论当前处理的形状是三角形、圆形还是其他任何形状,您都知道它有一个名为“draw()”的方法。还有一件事可能会增加对此的理解:在问题中,抽象类很可能被称为“车辆”而不是汽车。 “汽车”可能是其中一种实现方式。
    【解决方案3】:

    通过声明方法抽象,您并没有提供实现,而是强制扩展car 类的具体类为该方法提供实现。示例:

    abstract public class Car {
        abstract void drive();
    }
    
    public class Audi extends Car {
        void drive() {
            System.out.println("I'm an Audi.");
        }
    }
    
    public class Volvo extends Car {
        void drive() {
            System.out.println("I'm a Volvo.");
        }
    }
    

    未能提供实现会导致编译错误。

    现在,从这个例子中你可以很容易地看到,因为AudiVolvo 的实例都可以放在期望Car 的地方,你可以在运行时插入不同的行为(这称为多态性) :

    void driveCar(Car car) {
        car.drive();
    }
    
    void testDrive() {
        driveCar(new Audi()); // prints I'm an Audi
        driveCar(new Volvo()); // prints I'm a Volvo
    }
    

    【讨论】:

      【解决方案4】:

      Abstract 作为“形状”类工作,其中列出的所有方法(如 drive() )都必须实现,否则编译程序时会出现一些错误。 这种类不能实例化,所以需要继承这个类,实例化所有的抽象方法。 使用 abstract 的优点是,您可以将抽象类作为形状类,您可以将其继承到某些类而无需重写您的方法,因为它们已经存在。不要将 rewrite 与 implemente 混淆,因为您必须实现这些方法。 一个例子: 你有一个动物类:

      abstract public class Animal{
          abstract void eat();
          abstract void walk();
      }
      

      所以,如果你继承这个,你将需要自动实现这个方法。见下文:

      public class Horse extends Animal{
              void eat() { //place the eating code }
              void walk() { /// place the walking code }
      }
      

      希望你能理解!

      【讨论】:

        【解决方案5】:

        当你让事物实现同一个抽象类时,你是在说,这些事物在高层次上是相似的,但是它们在如何做事的细节上有所不同。抽象方法就是您所说的“这是扩展此类的所有事情都必须做的事情,但他们每个人都可以指定他们将如何做到这一点。”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-11-19
          • 2012-11-29
          • 2011-01-18
          • 1970-01-01
          • 2018-05-23
          • 1970-01-01
          • 2010-12-25
          相关资源
          最近更新 更多