针对接口编程的理解

前言:
随着Java的学习深入,越发觉得自己的渺小,感觉语言就像是一种哲学,语言中的些许存在,有着其存在的客观原因。彼时对某一些事物的浅薄理解,此刻以及往后再看,一边会觉得自己认知短浅,一边会感叹创造者对其思考。每一次深入思考,都会有超越以往的收获。不仅仅是学习编程,感觉更是在思考事情存在的本质。也许自己还足够渺小吧,还没有抵达巨人站立的地方。




面向对象的精髓在于模拟现实  ------- 这句话从别处看到,感觉总结到了极致。多从现实中思考,能更加深刻的理解面向对象。有时候感觉Java中某些设计非常难以理解,但是如果换个角度,从现实的角度去思考这些东西的存在原因,有时候就会恍然大悟。



闲话扯完,正文开始,记录我对接口编程的理解。


这句话在很多地方多次出现,可以说被奉为圭臬。先前只知道遵循准则去使用,未能去思考为什么这样做。今日好好总结一下,记录此刻自己的一些浅薄理解。


首先此处接口,不单为Interface,应该是更加广义上的 抽象类+接口。针对接口编程,应该是理解为 针对抽象层面的一种概括,而不是针对某处具体实现编程。接口应该是一组规则的集合。针对接口,就是针对这一系列规则。只要是实现了接口,就代表他必须要遵循这些规则,我就可以在一个更高层次或者更宽泛层次去指引他,或者说成命令他。针对接口编程,有种号令天下的感觉,天下皆苍生,苍生就算一种接口吧,只要你是一种生灵,我不管你到底是人是畜,是是神是鬼,我下一道命令,你就要去做。如果针对实现编程,感觉就是一种小家子气。或者说是一个小喽啰,只能管辖一个小群体。


关于抽象类与接口:
抛却抽象类无法实现多重继承,似乎抽象类可以完全代替接口。但是接口存在的用途,绝不单单是为了实现抽象类缺乏的多继承。伴随着学习的深入,我对抽象类与接口的又有了不同的理解。二者存在绝对不是矛盾的,也没有谁可以取代谁一说。有时候在纠结使用抽象类还是接口的时候,其实是没有理解自己去使用它们的动机而已,而仅仅是觉得这个地方应该用一下这些东西,或者只是遵循别人的经验,套用一下接口编程而已。我所认为,使用抽象类的动机主要是实现代码的复用,使用接口的动机是利用多态性。当无法权衡到底需要去用谁的时候,就应该去思考我要使用的它们的动机。也许以后,对二者还会有别的更加深刻的理解,但是我还是记录下此时自己对其的思考。


总结理解:
针对接口编程,而不是针对实现编程。编程时变量声明为超类型(抽象类或者接口或者父类),不针对具体子类或者实际类型,不需要考虑执行的类型到时是哪种实际类型,这样能大大提高程序的灵活性,是松耦合思想的体现。后期如果想更改实际类型,不需要更改很多代码,提高了程序的可维护性。









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值