Java多态就是为了降低耦合,方便我们开发的一种特性。
比如我写了一个动物的接口。然后我通过接口实现了猫和狗这个类。
在我需要使用的时候我可以这样实例化对象
动物 w = new 猫。
这就是向上转型。
这里就有一点疑问了,我们开发人员为啥不直接写个猫和狗的类。为啥偏偏要写一个接口。这不是在多此一举吗?
下面就我个人理解,仅供参考。
java是什么,是一个面向对象的工程型语言。这意味着啥,这意味着我们可能几十个人,或者几百个人一起开发同一个项目。
一个人有一个自己的开发习惯,如果我们所有人开发人根据需求,自己搞自己的代码块或者功能。那万一我们几十个人写完了发现,我靠,怎么代码合在一起的时候怎么到处都是错(变量,方法名不一致等等),程序跑不动了呀。
这样一搞,说个屁,效率多低呀。不行,不能这样搞开发。
然后就要有个开发项目的规范,刚才说了,每个开发人员有自己的开发习惯,那怎么规范嘛?这时候,就需要大佬上场了。谁来当老大嘛,没办法,就找那个头发最少的,写代码写的最多的人来当标准吧。
这样也可以服众,毕竟人家是前辈,人家代码写的多,把他来当标准,没啥问题。
那么问题来了,具体怎么规范呢?这时候就需要接口这个概念了。
那个头发最少的大佬,来写项目的规范(接口),那些接口里面有我们普通开发人员必须要实现的方法和变量。
打个比方我是这个大佬(小声bb),我写个接口,然后别人来实现我的接口。这时候别人所实现的接口的方法名和重要变量名全是我说了算,我喜欢驼峰规则的命名,他实现的时候一个字母都不能改。如果改了,当时开发工具就会提醒你在乱搞,就会报错就可以及时纠正。不像开始那样,一个人喜欢用驼峰英文,另一个人喜欢拼音。自己搞的时候没问题啊,结果到最后和别人的代码一起的时候就错了,这个就容易出问题。效率太低了。
所以在我看来,接口就是大佬发给普通开发人员的任务列表,接口里面的方法就是开发人员需要去做的任务。必须完成,不然没工资。如果你自己去找任务做,不看我的任务列表(接口)。结果出问题领不到工资,这可是你的责任,赖不着团队。搞不好团队还要找你麻烦,耽误我们开发进度。
这就是我对接口的理解。
接口的作用在于大项目的多人协同开发,可以分工和最后统一代码。你来实现这个接口,我来实现这个接口(分工),最后上交工作成果的时候,大佬一看,嗯,是服从的我的开发规范,按道理是不会出问题的。
当然,你自己一个人或者人少的时候写小项目,不用接口,也是可以的啊。没问题。