java-什么是抽象类和抽象方法?

可能重复:
Java抽象类

我得到了几种解释,但是到目前为止,我还无法理解Java中的抽象类和方法是什么。

有人说它必须与程序的安全性做些关系,另一些人说不是那样。

即使从Deitel&Deitel的书中,我也不明白它的目的。我们何时,何地以及为什么使用它?

请像您正在教初学者一样对它进行解释,非常感谢您的帮助。

Umer Hassan asked 2020-08-12T03:26:23Z
8个解决方案
76 votes

-Abstract class是无法实例化的,即无法创建其Abstract class

-Abstract class是没有定义的方法声明。

-Abstract class仅可使用非抽象方法。

-Abstract class可以同时具有非抽象方法和抽象方法。

-如果Abstract class具有Design patterns,则该类也必须是Abstract。

-第一个非抽象子类必须实现Abstract class

-Design patterns中的Abstract class用于封装不断变化的行为。

Kumar Vivek Mitra answered 2020-08-12T03:27:29Z
74 votes

抽象类是无法实例化的类。 唯一的目的是扩展其他类。

抽象方法是抽象类中的方法(必须声明为抽象),这意味着扩展的具体类必须覆盖它们,因为它们没有主体。

抽象类的主要目的是,如果您具有要在子类中使用的通用代码,但是抽象类不应具有自己的实例。

您可以在此处了解更多信息:抽象方法和类

Aviram Segal answered 2020-08-12T03:26:42Z
16 votes

抽象方法是没有主体的方法签名声明。 例如:

public abstract class Shape {
    . . .

    public abstract double getArea();
    public abstract double getPerimeter();
}

方法ShapegetPerimeter()是抽象的。 由于Shape类具有抽象方法,因此也必须将其声明为abstract。 也可以在没有任何抽象方法的情况下将类声明为abstract。 当一个类是抽象的时,就不能创建它的一个实例。 一个人只能创建(具体)子类的实例。 具体类是未声明为抽象的类(因此没有抽象方法,并且实现了所有继承的抽象方法)。 例如:

public class Circle extends Shape {
    public double radius;
    . . .

    public double getArea() {
        return Math.PI * radius * radius;
    }

    public double getPerimeter() {
        return 2.0 * Math.PI * radius;
    }
}

这样做有很多原因。 一种方法是编写一种对于所有形状都相同的方法,但该方法取决于在Shape级别未知的特定于形状的行为。 例如,可以编写该方法:

public abstract class Shape {
    . . .

    public void printArea(PrintStream out) {
        out.println("The area is " + getArea());
    }
}

诚然,这是一个人为的示例,但它显示了基本思想:根据未指定的行为定义具体的行为。

拥有抽象类的另一个原因是,您可以部分实现接口。 接口中声明的所有方法均由实现该接口的任何类继承为抽象方法。 有时,您想在类中提供接口的部分实现,而将细节留给子类。 部分实现必须声明为抽象。

Ted Hopp answered 2020-08-12T03:28:09Z
3 votes

抽象方法没有主体。定义良好的方法不能声明为抽象。

具有抽象方法的类必须声明为抽象。

抽象类无法实例化。

Abhishekkumar answered 2020-08-12T03:28:38Z
1 votes

抽象类是一个不能从其创建对象的类,因此它通常用于继承。(不确定是否可以在其中包含静态方法)

抽象方法是子类必须重写的方法,它没有主体,被标记为抽象,只有抽象类可以具有这些方法。

Alex555 answered 2020-08-12T03:29:03Z
0 votes

使用抽象类,您可以为其他类扩展某种框架。

您不能实例化它们,但是可以放置一些通用的实现,可以在扩展它们的类中使用它们。

Atropo answered 2020-08-12T03:29:28Z
0 votes

一旦获得了Java中抽象的含义,您就会问:为什么将它们放在其中? Java可能没有抽象的东西就能工作,但是它构成了某种OO风格或词汇的一部分。 实际上,存在抽象类或方法是表达程序作者意图的一种优雅方式的情况。 大多数情况下,当您编写供他人使用的框架或库时。

PeterMmm answered 2020-08-12T03:29:48Z
-2 votes

完整的抽象类和抽象方法

抽象方法没有主体。定义良好的方法不能声明为抽象。

具有抽象方法的类必须声明为抽象。

抽象类无法实例化。

Abhishekkumar answered 2020-08-12T03:30:22Z
translate from https://stackoverflow.com:/questions/13824142/what-are-abstract-classes-and-abstract-methods