我正在阅读这本书-Hadoop:权威指南
在第2章(第25页)中,提到了“新API相对于接口更喜欢抽象类,因为它们易于开发。例如,您可以在抽象类中添加方法(具有默认实现)而不会破坏旧的实现。类”。它是什么意思(特别是什么意思是“破坏类的旧实现”)?欣赏是否有人可以向我展示一个示例,为什么从这个角度来看抽象类比接口更好?
预先感谢乔治
对于接口,必须由实现该接口的类来实现在接口中定义的所有方法。
给定接口A
interface A {
public void foo();
}
和B类:
class B implements A {
}
它必须提供接口中定义的方法的实现:
class B implements A {
@Override
public void foo() {
System.out.println("foo");
}
}
否则,这是编译时错误。现在使用一个抽象类,该类具有方法的默认实现:
abstract class C {
public void bar() {
System.out.println("bar");
}
}
从该抽象类继承的类如下所示:
class D extends C { }
没有错误。但是如果愿意的话,它也可以覆盖默认方法的实现。
作者在那儿说的是:如果您的API尚不稳定,并且您需要调整接口(是的,抽象类也是接口(以OOP的形式讲)),那么抽象类允许您添加内容而不会破坏那些已经在那里。但是,这仅适用于非抽象方法。如果添加抽象方法,则仍需要在每个派生类中实现它们。但是,如果您的API仍在不断发展并且已经建立了很多东西,它可以使您的生活更轻松。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句