抽象类和接口的区别、为什么用抽象类。

抽象类和接口的区别、为什么用抽象类。

答得稀烂。。。
网上再学习了一次,在这里记下看到各位大虾的金言。
一、抽象类:
在面向对象领域,抽象类主要用来进行类型隐藏。那什么是类型隐藏呢?我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。好比,动物是一个抽象类,人、猴子、老虎就是具体实现的派生类,我们就可以用动物类型来隐藏人、猴子和老虎的类型。( 参考doSome方法)二、接口:
三、抽象类和接口的区别:
首先,抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个接口。也许,这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。 其次,在抽象类的定义中,我们可以赋予方法的默认行为。但是在接口的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会 增加一些复杂性,有时会造成很大的麻烦。 抽象类在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在”is a”关系,即父类和派生类在概念本质上应该是相同的。对于接口来说则不然,并不要求接口的实现者和接口定义在概念本质上是一致的,仅仅是实现了接口定义的契约而已。接口表示的是”like
a”关系。 使用抽象类来定义允许多个实现的类型,比使用接口有一个明显的优势:抽象类的演化比接口的演化要容易的多。在后续的发行版中,如果希望在抽象类中增加一个方法,只增加一个默认的合理的实现即可,抽象类的所有实现都自动提供了这个新的方法。对于接口,这是行不通的。虽然可以在骨架实现类中增加一方法的实现来解决部分问题,但这不能解决不从骨架实现类继承的接口实现的问题。由此,设计公有的接口要非常谨慎,一旦一个接口被公开且被广泛实现,对它进行修改将是不可能的。 所以,使用接口还是抽象类,取决于我们对问题的概念的本质理解和设计的意图。
Java接口与抽象类的相同点:
1. 都不能被实例化。
2. 都能包含抽象方法。
抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。2)抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声名必须用public来修饰没有具体实现的方法。3)抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static fainl)。4)这一点也是最重要的一点本质的一点抽象类是对象的抽象,然接口是一种行为规范。
例如每个接口可以代表一种最顶层的抽象,可以理解为代表一类东西,如果一个类实现了多个接口,那这个类就有了多种类型,即接口是定义混合类型的理想工具最后:有一种设计模式,就是,默认适配模式,意思就是说,首先定义一个接口,通过抽象类实现这个接口,并实现一些子类不需要一定实现的方法,然后,子类就可以选择是继承接口,实现所有方法,还是直接继承这个抽象类实现具体需要的方法,
定义成抽象类是为了以后要其子类来继承的,因为父类里有很多方法是无法定义具体的实现的,只能定义一个原型,让子类来分别实现!所以要定义成抽象的!
简单来说就是
抽象类是在接口和实体类之间的一个桥梁例如做一个接口叫做飞行FlyAnimalAction,里面定义一个方法叫做flying,再定义一个方法叫做eat
做一个类叫做蚊子实现接口,蚊子要实现flying方法,实现自己的eat方法
做一个类叫做苍蝇实现接口,苍蝇也要实现flying方法,实现自己的eat方法
你发现所有会飞的动物都要实现这个接口,很麻烦,不如
做一个抽象类FlyAnimal,然后实现上面的接口
在里面实现flying这个方法,因为大部分的飞行动作是一样的,而eat方法则继续写成抽象方法,因为大部分的动物吃东西是不一样的
下面你再写蚊子类就简单了,可以直接继承这个抽象类,然后实现自己的吃方法就行了
而且苍蝇类的制作也是一样,这个时候抽象类的功能就显示出来了,当然抽象类的功能远远不是这些,只是初期理解到这里就够了。

本文来自网络转载,仅供学习参考!不代表趣典故立场,本站不拥有所有权,不承担相关法律责任。如发现本站有抄袭侵权/违规的内容,请发送邮件至@qq.com进行反馈,一经查实,本站将立刻删除。

(0)

相关推荐

  • 老有所依电视剧结尾歌是什么

    歌名:老有所依 歌手:那英&马上又 试听过后,望采纳 男子高中生的日常片尾毕业的背景音乐是什么 《男子高中生的日常》片尾曲 ——文学少女填词:山内泰延谱曲:Audio Hi…

    2023年9月30日
  • 怎么讲有趣的话题逗人开心呢 帮忙下 谢谢 我脑笨最更笨

    给你讲个笑话:1.土豆捅了面包一刀,面包死了,打三个字。吃的东西(豆沙包)2.黄先生有个儿子叫黄军,一天父亲带着儿子去乘8路公交车,车来了,父亲大喊:黄军快跑,八路莱了。 其实幽默…

    有梗百科 2024年6月19日
  • 轻松逗笑女朋友的微信聊天谐音梗笑话句子锦集六十句

    轻松逗笑女朋友的微信聊天谐音梗笑话句子(篇一) 1.连我都不亲 那你亲什么 亲烧嘴吗? 2.俩大爷在下棋,小孩:大爷你车没了。大爷:什么车,这叫ju。小孩:哦,大爷你自行ju被人骑…

    有梗百科 2024年7月6日
  • 为什么有的笑话不好笑?

    女孩对男孩的追问(超经典)“你就是不想理我!”电话里她的话很清晰。“我不想理你?我昨天还给你发了Email。”我说。“那你今天在聊天室里怎么不跟我说话?”她说。“我怎么没跟你说啊,…

    有梗百科 2024年1月30日
  • 求一篇 课前演讲文章 要关于网络的

    我爱二中,二中里面我最爱老师,其中我最爱的就是二中的语文老师,我最爱的语文老师里我最最爱的就是教我的语文老师。。(循环到800吧——、 关于网络有好处的演讲稿100 网络提供了一种…

    有梗百科 2024年4月10日
  • 多尔衮都解决不了的事梗是什么意思?

    多尔衮都解决不了的事梗是什么意思?最近在抖音流行的梗,代表的是一些事情女人做不到男人就更做不到的意思,有小伙伴还不知道多尔衮都解决不了的事梗是什么意思,下面是深空小编带来的《抖音》…

    有梗百科 2024年6月4日
  • 幽默,谁能给个好笑的笑话

    1新开张了一间饭店,甲说:“我有贵宾卡,能打个八折。”乙说:“我跟老板是哥们,能打个五折”。丙说:“我没贵宾卡,跟老板也不熟,我吃完饭不用给钱,他们给我打了个…骨折”。2地球人都清…

    2023年11月14日
  • 抖音运营有啥技巧?

    抖音上的短视频,其实可以统分为两类:常规视频,以及爆款视频。常规视频保证账号的活跃,爆款视频决定账号的高度。对于很多人来说,偶尔出一个爆款视频并不是特别难的事情,但想做到持续生产爆…

    2023年10月25日
  • 了解一下是什么梗

    了解一下,网络流行语,是一种固定的流行语体,完整的说法是“xxx,了解一下”,最初比较流行的是:“游泳健身了解一下”。最初只是为了单纯地推销某个事物,现多应用某个事物来打击吐槽人。…

    2023年10月2日
  • 超级搞笑笑话大全

    超级搞笑笑话大全 1、猫因夜生活所迫在狐狸开的夜来香发廊坐台,一日老鼠来到发廊点名要将猫包夜,猫誓死不从,老鼠大怒道:当初追老子追得死去活来,现在送上门还假正经!2、医生问病人是怎…

    有梗百科 2024年3月30日