什么是抽象类和抽象方法?
可能重复:
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明确的方法不能被声明为抽象的。
具有抽象方法的类必须声明为抽象类。
抽象类不能被实例化。