Abstract是抽象的,是一个从许多事物中提取共同的、基本的特征,放弃其非基本特征的过程。说到抽象,我们可能会想到许多抽象的画家,比如梵高和毕加索。说到抽象,抽象这个词真的很抽象,只能理解,不能说话,但面对困难,本文试图为朋友们说话Abstract方法在Java中,如有不妥之处,多加指正包涵。
让我们来看看抽象方法的官方定义:在面向对象的编程语言中,抽象方法是指只有方法声明而没有具体方法的方法。抽象方法通常存在于抽象类或接口中。
java抽象的方法是以abstract修改方法只声明返回的数据类型、方法名称和所需参数,没有方法体,即抽象方法只需要声明而不需要实现。
以下是抽象方法的特征,我们将围绕其特征展开。
1.抽象方法不允许有方法体,只能分号“;”结尾
2.抽象方法只能在抽象类中声明 (含抽象方法的类必须是抽象类)
3.可包括抽象类0或多种抽象方法
4.被子必须实现抽象方法
5.如果子类不能在父类中实现抽象方法,那么子类也必须是抽象方法
当一种方法是抽象方法时,这意味着该方法应该被子类方法重写,否则子类方法仍然是abstract的子类也是抽象类,因为它继承了父类,并且有抽象的方法,即声明为abstract。abstract抽象类不能使用new实例对象,abstract方法只允许声明不能实现。如果一个类包含abstract方法,则必须使用abstract进行修改。当然,abstract类也可以没有abstract方法。 在抽象类中,没有抽象的方法可以禁止这类对象的生成。
在所有的interface方法都是publice abstract,即使你没有声明它是publicc, abstract。所有在interface中的数据成员都是publice static final,即使你没有声明,也不能是blank final 编译时确定。interface在Java中的地位与class相同。interface中的所有方法都必须实现interface的类别“实现”,否则,这一类就成了抽象类。Interface可以从多个interface中继承,但不能继承。多个interface可以实现一个类。
final和abstract,private和abstract,static和abstract,这些都是不能放在一起的修饰符,因为abstract修饰的方法必须在其子类中实现(覆盖),才能多态调用。以上修饰符在修饰方法期间子类无法覆盖此方法,final是不能覆盖,private不能继承到子类,所以不能覆盖,static可以覆盖,但在调用中会调用编译类型的方法,因为调用是父类的方法,父类的方法是抽象的方法,不能调用,所以上面的修改符不能放在一起。
抽象方法没有提供实现部分,抽象方法是一种强制性的衍生物覆盖方法,否则衍生物将无法实例化。例如:
///抽象方法
public abstract class Animal
{
public abstract void Sleep();
public abstract void Eat();
}
事实上,如果该类包含抽象方法,则该类也是抽象的,也必须声明为抽象。例如:
public class Animal
{
public abstract void Sleep();
public abstract void Eat();
}
必须在衍生类中重写抽象方法,这与接口相似
public abstract class Animal
{
public abstract void Sleep();
public abstract void Eat();
}
public class Cat : Animal
{