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

可能重复:
Java中的抽象类

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

有人说这个程序的安全性需要做些什么,其他人说这不是什么问题。

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

请解释一下,就像你在教初学者,我真的很感激你的帮助。

抽象类是一个不能实例化的类。 其他课程的唯一目的是扩展。

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

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

您可以在这里阅读更多关于它的内容: 抽象方法和类

Abstract class是一个不能实例化的类 ,即它的 object 不能被创build。

Abstract method没有定义的方法声明

Non-abstract class 只能有非抽象方法。

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

– 如果这个Class有一个Abstract method 那么这个类也必须是Abstract。

Abstract method 必须由第一个Non-Abstract子类实现。

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

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

 public abstract class Shape { . . . public abstract double getArea(); public abstract double getPerimeter(); } 

getArea()getPerimeter()是抽象的。 因为Shape类有一个抽象方法,所以它也必须被声明为abstract 。 一个类也可以被声明为abstract没有任何抽象的方法。 当一个类是抽象的,它的一个实例是不能创build的; 人们只能创build(具体)子类的实例。 具体类是一个没有被声明为抽象的类(因此没有抽象方法,并实现了所有的inheritance抽象方法)。 例如:

 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级别未知的Shape特定的行为。 例如,可以写下这个方法:

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

无可否认,这是一个人为的例子,但它显示了基本的想法:用未指定的行为来定义具体的行为。

有一个抽象类的另一个原因是你可以部分实现一个接口。 在接口中声明的所有方法都被任何实现了接口的类inheritance为抽象方法。 有时候你想在类中提供一个接口的部分实现,并把细节留给子类; 部分实现必须声明为抽象。

抽象方法没有body.A明确的方法不能被声明为抽象的。

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

抽象类不能被实例化。

抽象类是一个你不能创build对象的类,所以它主要用于inheritance。(我不确定是否可以有静态方法)

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

抽象类可以为其他类提供一些骨架来扩展。

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

一旦你得到了什么抽象的手段在Java中,你会问:为什么他们把这个? Java可以在没有抽象的东西的情况下工作,但它是某种OO风格或词汇的一部分。 真实存在的情况是抽象类或方法是expression程序作者意图的一种优雅方式。 大多数时候你正在编程一个框架或一个库,将被其他人使用。

摘要类和ABSTARCT方法全面描述通过它

抽象方法没有body.A明确的方法不能被声明为抽象的。

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

抽象类不能被实例化。