继承、多态和接口

今晚前瞻,八点嘿嘿~

今天来写继承多态和接口,以及剩下的一些语法部分,写完这篇总结,SE语法就暂时结束了,明天开始数据结构的学习。

下笔之前,我想调格式来着,但是一想到这些,我心里多少带点烦,相比于格式,我更愿意把重心放在内容上,毕竟我写这个博客主要也是为了自己的复盘,大家如果愿意读我的想法,那我肯定高兴,如果嫌文章太丑了也欢迎批评,我大概不会改嘿嘿嘿~

好了,废话不多说,开始!(前排提醒,文章没有精心排版,没有分类分点,纯粹个人想法的随心流露)

杂谈

前一个礼拜,一直沉浸在这部分的学习中,不管是看网课,学库函数,还是看书,都学到了很多,总的来说,java语法或者说面向对象的最核心的东西之一,应该就是我今天要说的继承和多态了。

初学吧,在把类和对象学名白后,感觉继承还是蛮简单的,不也就是类似父子关系那样呗,你有的我也有,除此之外我也可以发展我自己特有的。而学到多态我有点懵,我以为继承完以后有自己的特性就算多态了,虽然这也算是多态,但是我学到的那种多态表现出来的形式还是让我大吃一惊:即调用同一个类方法,传入不同的对象,会根据对象的不同,自动调用不同的方法。说起来就好像我们会走路,猴子也会走路,但是走起路来的样子却是大不相同,而我们都同属于哺乳动物,这时可以说发生了多态。

而接口又是个什么东西?我看网课,看书,在b站上找视频,没有很多人能把接口是什么很生动形象地讲给我。网上大多数地方对接口的描述超级简单,就是非常官方的那种,说是什么实现方法的一种规范,实现了什么接口,就可以干什么事情之类的,也有拿Usb举例子的,比如说电脑有Usb接口,它就可以使用鼠标、键盘等功能,我当时一顿懵,我倒是觉得,不用接口这个东西也可以啊?一时间想不通。

最后,还是b站上一个视频下面的评论用了几句话启发到我。

这个评论具体是什么我不记得了,但是大概意思就是说,一个类的为什么可以继承,可以多态,可以实现接口,就是为了让我们对象的设计更加人性化,用起来也更简洁明了。继承就是说明这个类是个什么,因为它从父类继承过来,拥有父类拥有的一切可以集成的属性和方法;而多态就是继承完父类的子类有什么自己才有的特性;接口就是说这个类可以实现、或者说你想让她实现什么功能,必须得有这个接口,就类似于你想跑,虽然你有腿,但是你还必须得有运动神经!

上面这一段话是我根据他简短的几句话拓展开的,带有自己的理解,可能不算是很到位,但是对于基础理解来说,我觉得应该说大差不差。然后说到接口,又不得不说一下抽象类,这两个东西用起来极其地相似,为什么这么说,在从多渠道学接口的时候,这两个东西几乎总是同时出现,在我一番研究后,发现它们在很多方面都是相似的:

  1. 它们内部原则上来说都不具体实现方法,而是留给继承它的类或者实现它的类来重写方法 ;

  1. 它们都可以被继承或者实现,也就是说,接口或者抽象类可以当作方法的合集;

  1. 接口本质上是抽象类的简化,仅用于功能的实现,除去了其它的功能。

而在使用过程中,这两个东西究竟怎么使用,场景又是如何呢?这个我暂时不得而知。毕竟我现在只是一些理论学习,以后用起来还得另外说。

不过我还看过这种说法:抽象类和接口都是面向对象中非常抽象的东西,而实际上,它们本质也是对事物的抽象,具体来说,抽象类,正如其名,这点它是和类一样,将对象的属性特征抽象出来,而接口则是将对象的行为特征抽象出来;再具体点,抽象类一般用于相同种类的对象的归纳中,而接口则只关注对象的行为本身,不关注对象本身,比如上面的例子,我能走,猴子能走,我们都得实现走路这个接口,我们虽然物种不同,但是我们都能走,因此行为上是一致的。

突然想到一点很有意思的:如果说接口就是一个行为实现的标准,类似于,我定义了一个电脑类,这个电脑类需要实现鼠标这个接口才能使用鼠标,实现了键盘这个借口才能打字,而电脑内部的驱动器就是对外部设备进行重写和兼容的工具;而笔记本电脑的设计好像就是类似于用到了封装思想,将鼠标键盘设置为内驱,从而不用接口也可以打字和用鼠标,但是他们依然存在接口,这些接口的存在就是为了满足将来可能的其他需求,比如说我想使用我自己买的键盘和鼠标,这时候就需要实现接口接入设备,然后内部驱动再将自带的驱动重写,从而实现外驱,这也算接口思想的应用之一吧。

上一段是我某天突发的一些想法,记录在此。

小总结

回顾了一下上面,继承多态没说多少,反倒是集中在接口上了哈哈哈。倒也正常,毕竟我理解接口概念可比理解继承多态里的向上转型,要多花了很多时间呢。

总的来说,我自认为,在带着C语言的基础和python的了解之后,Java的基本语法我已经熟悉了一遍了,应用肯定还差很多,所以说,后面更要通过半个月数据结构的学习,来对这门语言进行进一步的熟悉。

总的来说,我在学java的过程中,居然感受到java的语法像是C语言和python的结合?事实肯定不是如此,但是类似一些基本的语法结构,java和C/C++的习惯是一致的,但是java又是面向对象的语言,所以很多方法和语法的设置和python类似hhh

数据结构其实我在暑假的时候用C语言学过一次,当时基本的链表、栈和队列、堆和排序等等都自己写过,主要是为了转专业的笔试,虽然最后没转过去hhh....不然我现在在这写的大概率就是C++的博客了。

好了,今天就说到这吧,明天开数据结构,今天晚上好好奖励一下自己哈哈哈看前瞻,做一做攒了两个版本的任务~

喜欢我的文章点个关注吧~谢谢~

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值