可能重复:
在Java中抽象类
我有好几种说法,但到目前为止,我无法理解什么是Java中的抽象类和方法。
有人说,它做的程序的安全性的东西,对方说这是不是这样的事情。
甚至从Dietel&Dietel的书我不明白它的目的。 何时,何地,为什么我们使用它呢?
请解释一下它就像你教初学者,我会很感激你的帮助。
可能重复:
在Java中抽象类
我有好几种说法,但到目前为止,我无法理解什么是Java中的抽象类和方法。
有人说,它做的程序的安全性的东西,对方说这是不是这样的事情。
甚至从Dietel&Dietel的书我不明白它的目的。 何时,何地,为什么我们使用它呢?
请解释一下它就像你教初学者,我会很感激你的帮助。
抽象类是不能被实例化的类。 这是唯一的目的就是为其他类继承。
抽象方法是抽象类(必须声明为abstract)方法,这意味着延长混凝土类必须重写他们,因为他们有没有身体。
一个抽象类的主要目的是,如果你有共同的代码在子类的使用,但抽象类不应该有自己的实例。
你可以阅读更多关于它在这里: 抽象方法和类
- Abstract class
是一个不能被实例化 ,即, 其 object
无法创建。
- Abstract method
是方法的没有它的定义声明 。
-一个Non-abstract class
只能有非抽象方法。
-一个Abstract class
可以同时具有非抽象和抽象方法。
-如果 Class
有一个Abstract method
那么类也必须是抽象的。
-一个Abstract method
必须由第一个非抽象子类实现。
- Abstract class
的Design patterns
是用于封装不断变化的行为。
抽象方法是一个方法签名声明,没有身体。 例如:
public abstract class Shape {
. . .
public abstract double getArea();
public abstract double getPerimeter();
}
该方法getArea()
和getPerimeter()
是抽象的。 由于Shape
类有一个抽象方法,它必须声明为abstract
为好。 类也可以声明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());
}
}
诚然,这是一个人为的例子,但它表明了基本思路:定义的明确的行为方面的具体行为。
另一个原因是有一个抽象类是这样你就可以部分地实现一个接口。 在接口中声明的所有方法都继承由实现接口的任何类抽象方法。 有时你想提供部分实现的类的接口和细节留给子类; 部分执行必须声明为抽象。
抽象方法没有body.A明确定义的方法不能被声明为abstract。
其中有抽象方法的类必须声明为抽象的 。
抽象类不能被实例化。
一个抽象类是不能创建从对象的一类,因此它主要用于继承。(我不知道,如果你可以在它的静态方法)
抽象方法是子类必须覆盖的方法,它没有身体,被标记为抽象的,只有抽象类可以有那些方法。
抽象类,你可以有某种骨架的其他类继承。
你不能实例化他们,但你可以把一些常用的实现,你可以在扩展它们的类使用。
一旦你得到了什么抽象的手段在Java中,你会问:他们为什么把这个吗? Java的可工作而抽象的东西,但它使得有一定OO风格或词汇的一部分。 确实存在的情况下一个抽象类或方法是表达程序作者的意图一种优雅的方式。 大多数时候你正在编写的框架或将被其他人使用的库。
抽象类和ABSTARCT方法充分说明通过它去
抽象方法没有body.A明确定义的方法不能被声明为abstract。
其中有抽象方法的类必须声明为抽象的。
抽象类不能被实例化。