【发布时间】:2013-02-01 05:05:13
【问题描述】:
abstract method和method overriding在java中有什么区别?因为使用方法覆盖可以找到相同的结果。那么abstract方法的必要性是什么。
【问题讨论】:
标签: java methods abstract overriding
abstract method和method overriding在java中有什么区别?因为使用方法覆盖可以找到相同的结果。那么abstract方法的必要性是什么。
【问题讨论】:
标签: java methods abstract overriding
一个抽象方法迫使继承该方法的程序员为其定义一个实现,即该类说“我需要这个函数的一个实现,这个类的具体实现必须提供它”。
这与重写方法相反,重写方法允许(而不是要求)继承类更改该类对象的方法实现。
特别是,可覆盖方法(或“虚拟”方法)具有覆盖方法可以调用的基本实现(其本身可以为空)。
【讨论】:
abstract 方法需要实现才能使用子类。您还必须实现非抽象方法,例如,在接口方法签名的情况下。
我认为说您实现抽象方法的方式与您实现接口的方法存根相同是正确的。 覆盖与实现不同,因为您可以覆盖不是存根的方法。子类经常覆盖超类既不是接口也不是抽象类的方法。因此,覆盖一词的含义比实现更广泛。
您可能会发现本教程很有帮助,因为它的定义非常清晰。
http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
希望有帮助!
【讨论】:
两者有不同的用法,无法比较。
抽象类的创建只是为了被其他类子分类。实现类必然必须实现其中声明的所有抽象方法。然而,方法覆盖是子类从继承的superclass 覆盖其行为“足够接近”的方法,然后根据需要修改行为的能力。 抽象方法是一种在没有实现的情况下声明的方法,需要必须在子类中实现。
【讨论】: