Java 抽象方法的目的是什么?

Java 抽象方法的目的是什么?,java,polymorphism,overriding,abstract,Java,Polymorphism,Overriding,Abstract,正如上面的代码片段一样,Java中抽象方法的目的到底是什么?据我所知,根据定义,它们不允许有实体。强制从其继承的任何非抽象类实现该方法,类似于接口。抽象方法应在该抽象类的子类中实现。例如,您的类名为Shape,它有一个draw()方法。您不能为形状类实现此方法,因为您真的不知道如何绘制形状,所以您将其设置为抽象。当您创建扩展形状的三角形类时,您可以确定如何绘制三角形,并且可以实现draw()方法。希望这能有所帮助。通过声明方法抽象,您不是在提供实现,而是在强制扩展car类的具体类为方法提供实现。

正如上面的代码片段一样,Java中抽象方法的目的到底是什么?据我所知,根据定义,它们不允许有实体。

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

抽象方法应在该抽象类的子类中实现。例如,您的类名为
Shape
,它有一个
draw()
方法。您不能为
形状
类实现此方法,因为您真的不知道如何绘制
形状
,所以您将其设置为
抽象
。当您创建扩展
形状的
三角形
类时,您可以确定如何绘制
三角形
,并且可以实现
draw()
方法。希望这能有所帮助。

通过声明方法抽象,您不是在提供实现,而是在强制扩展
car
类的具体类为方法提供实现。例如:

abstract public class car 
{   
    abstract void drive();
}
未能提供实现将导致编译错误

现在,从这个示例中,您可以很容易地看到,由于
Audi
Volvo
的实例都可以放置在
Car
预期的位置,因此您可以在运行时插入不同的行为(这称为多态性):

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

void driveCar(Car car) {
    car.drive();
}

void testDrive() {
    driveCar(new Audi()); // prints I'm an Audi
    driveCar(new Volvo()); // prints I'm a Volvo
}
因此,如果您继承了该方法,则需要自动实现该方法。见下文:

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

希望你能理解

当你让事物实现同一个抽象类时,你是说,这些事物在高层次上是相似的,但它们在具体操作上是不同的。一个抽象方法是这样说的:“扩展这个类的所有东西都必须做一些事情,但它们都必须指定它们将如何做。”

对不起。。。我的投票不正确,这是一个方面。另一个是要有一些关于形状的一般知识。例如,如果您将多个图形放入某种集合中,不管当前处理的图形是三角形、圆形还是其他形状,您都知道它有一个名为“draw()”的方法。还有一件事,这可能会增加对这一点的理解:在这个问题中,抽象类很可能被称为“vehicle”,而不是car。“汽车”可能是其中一种实现方式。
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 }
}