由猫捉老鼠想起的——关于继承、接口和引用

简介: 用C#写了几年的网站,虽然感觉上没什么问题了,但是对于基础知识一直都是模模糊糊的,最近几天重新学习了一下基础知识,感受颇深。对于类、封装、继承、多态、接口等有了新的认识。我想说说我的想法,请大家看看对不对。
用C#写了几年的网站,虽然感觉上没什么问题了,但是对于基础知识一直都是模模糊糊的,最近几天重新学习了一下基础知识,感受颇深。对于类、封装、继承、多态、接口等有了新的认识。

我想说说我的想法,请大家看看对不对。用猫捉老鼠来举个例子吧。

语言:C#


先来看看猫,猫有爪子、牙齿、胡须等等,这些都是天生的,也可以说是继承基类得到的。(继承)

再来看看猫捉老鼠的本领,(接口)
1、不只是猫能捉老鼠,蛇、猫头鹰等其他动物也可以捉老鼠。
2、猫捉老鼠的功能不是与生俱来的,而是后天学习的,如果不学习的话,那么猫就失去了捉老鼠的能力,学习不好的话也很难捉到老鼠。

说了这么多是想说明,捉老鼠的功能可以看作是一个接口,各种动物都可以继承(当然也可以不继承),光继承了还不行,还得去实现。自己去实现,那么就有不同的形式,也就有好有坏。

最后看看人是怎么对付老鼠的。(引用)

人呢也可以继承捉老鼠的接口,拿着板砖拍老鼠。但是人是很懒惰的同时也是很聪明的,于是人发明了老鼠药、老鼠夹,也可以买一只会捉老鼠的猫来。

那么这时 老鼠药、老鼠夹,会捉老鼠的猫 就是引用,引用一个现成的类来完成捉老鼠的功能。


我觉得接口有两个主要的功能 —— 规范命名和方便调用

比如可以写一个捉老鼠的接口,不管是什么只要有捉老鼠的功能那么久的继承捉老鼠的接口,然后去实现这个功能,功能(函数)的名称是相同的。

那么在调用捉老鼠的功能(函数)的时候,可以直接使用这个接口,而不用管具体是什么动物实现了捉老鼠的功能。


如果说接口实现了多继承,我觉得有点不大对劲。其实类完全可以直接实现多继承,C++就可以的。不知道是什么原因C#里面就给去掉了,弄个接口来代替。但是接口是“只定义不实现”的,是不是有点郁闷呢。

什么?您说猫捉老鼠和蛇捉老鼠是不一样的,这也对,但是我们可以用重写来实现呀。


其实有的时候使用“引用”的方式可以更好的解决问题。

当然我并不是说接口不好,也不是说不应该使用接口。只是想说不要太死板,灵活一点,该用什么就用什么。

还是那句话说得好:不管是黑猫白猫捉到耗子就是好猫!


PS:瞎说了几句,如有错误请大家多多帮助。知道这里高手很多,请各位高手多多指教!多多感谢!

这里的帖子对我也有很大的帮助。在此表示感谢!


相关文章
|
9月前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
Java Kotlin
​ Kotlin教程笔记(15) - 方法重载与默认参数
​ Kotlin教程笔记(15) - 方法重载与默认参数
66 4
​ Kotlin教程笔记(15) - 方法重载与默认参数
|
设计模式 架构师 网络协议
Java中保持扩展性的几种套路和实现
在日常的开发中,作者总结了平常用到的一些低成本、保持扩展性的套路,分享出来,欢迎大家讨论。
2249 7
|
存储
计算机组成原理——大小端模式与边界对齐
计算机组成原理——大小端模式与边界对齐
903 0
计算机组成原理——大小端模式与边界对齐
|
弹性计算 Linux 网络安全
续领服务器
我是一名计算机科学与技术专业的学生,目前大四。在假期的时候通过朋友推荐了解到阿里云的飞天加速计划能够领取免费的学生服务器进行学习,初次试用时间为两周。领取前我在阿里云上完成了学生认证和新手预备训练营,并且学习使用了阿里云的镜像快照等功能。
181 0
|
图形学
Creating custom data graphics in Visio
Creating custom data graphics in Visio https://blogs.
1286 0
|
设计模式
IO学习笔记(二)
11.  IO实现读取键盘录入  与   字符流和字节流的转换 System.out标准的输出 System.in标准的输入           static InputStream  in OutputStreamWriter(OutputStream out)  OutputStreamWriter(OutputStream out, String charsetName)
1287 0
|
4天前
|
云安全 人工智能 自然语言处理