Java中抽象类和接口

修饰符:抽象类中的抽象方法可以有public、protected和default这些修饰符,而接口中默认修饰符是public。不可以使用其它修饰符。

一般来说,接口中不考虑Java8中default方法,没有实现的代码。抽象类可以定义抽象方法和非抽象方法。

接口和抽象类的职责不一样。接口主要用于制定规范。即面向接口编程。而抽象类主要目的是为了复用。典型的就是模板方法模式。

一般在实际开发中,我们会先把接口暴露给外部,然后在业务代码中实现接口。如果多个实现类中有相同可复用的代码,则在接口和实现类中间加一层抽象类,将公用部分代码抽出到抽象类中。可以参考下模板方法模式,这是一个很好的理解接口、抽象类和实现类之间关系的设计模式。

 
接口的设计目的,提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。
而抽象类的设计目的,是代码复用。
当不同的类具有某些相同的行为,可以让这些类都派生于一个抽象类。在这个抽象类中实现了这些方法,达到了代码复用的目的。
对不同类的差异化方法进行抽象,不做具体实现,让子类去实现。正是因为没有实现具体方法,所以抽象类不允许实例化出来(调用抽象方法没有意义)

posted on 2023-08-07 19:07  passionConstant  阅读(22)  评论(0编辑  收藏  举报