java中的抽象类到底什么作用?感觉完全是鸡肋啊

我要规范代码,直接写接口然后用一个类实现这个接口不就好了,抽象类在实际的开发中到底有没有什么独特的作用?
慕尼黑5688855
浏览 2251回答 2
2回答

紫衣仙女

如果你看JDK的源码,就会发现,大部分情况下,你用到的方法,他的父类都是一个抽象类,而不是一个直接的接口。原因主要有两个,接口确实是用来定义规范的,同一个接口下,可能有大量不同的实现,举个例子,List这个接口booleanadd(Ee);booleanremove(Objecto);booleanaddAll(Collection

墨色风雨

将部分共有代码在抽象类中实现。这里举一个在HEADFIRSTDESIGNPATTERNS中的一个例子。假设现在有各种各样的鸭子,比如橡皮鸭,野鸭。这些鸭子有的能飞有的不能飞,但是它们都有两个翅膀,都能发出声音。根据需求我们会得出以下实现。publicabstractclassDuck{privateWingleftWing;privateWingrightWing;publicvoidquack(){...//quackquack}}publicinterfaceFlyable{voidfly();}publicclassRubberDuckextendsDuckimplementsFlyable{publicvoidfly(){...//cannotfly}}publicclassNormalDuckextendsDuckimplementsFlyable{publicvoidfly(){...//flygracefully}}其实抽象类本质是为了提高代码的复用性。在JAVA中的应用还是很广泛的。比如说Collection接口之下的AbstractCollection抽象类。当你想要对某个接口进行默认实现,并且不希望在该实现上创建实例,那么抽象类是一个很好的选择。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript