|
|
程序员们常常对类,接口相关的种种问题争论不休。
这里分为两块:
1 哲学上说的"类"是什么东西
2 编程语言中的class,interface是什么东西
1 “类”就是多个事物共同具有的特性
2 interface,class帮助程序员明确代码中的"类",以及减少程序员的工作量。
但,就算没有class,interface,
甚至没有其他的任何代码重用手段或任何设计模式,
程序中仍然可以编写出"类",只是需要写太多重复枯燥的代码
我列举几个错误的观点:
> 哲学上说的"类",在编程中,应当是interface,
而class则即包括类,又包括可重用的实现代码
这看起来很正确,特别是现在的编程都强调区分interface和class
没错,哲学上在说道"人类""黄种人""大人"的时候,都是抽象的东西,
而我们没有看到"人类""黄种人""大人"存在某种实体。
所以我们可能会说“哲学上的类在编程中就是interface,
而class则即包括哲学上的类,又包括可重用的实现代码”
其实这是片面的认识,如果我们把"黄种人"再继续分类下去可以有:
"中国的黄种人"->"汉族的黄种人"->"长得很帅的汉族的黄种男性"
->... ...->"张三"
有人说,“张三”怎么是一个"类"呢?不是实例么?
1 哲学上没有“实例”一说
2 "张三"可以继续细分"昨天的张三"->"昨天在编程的张三"->...
> 哲学上说的"类",在编程中,就是代码重用
这看起来是一个对哲学,编程认识很深而发出的观点
没错,编程中,类模板是"类的类",函数模版是"函数的类",
还有class也是当然是类,还有接口类,此外甚至循环代码等也是类。
没错,被重用的代码,是编程中的类,但编程中的类不仅仅是被重用的代码。
证据是:
1 如果你复制粘贴代码,那它肯定是"类",但它到底算不算代码重用?
2 就算不做任何代码重用或复制粘贴,也可以写出同样作用的代码,
而分析这些代码就可以看出,里面可以归纳出一些"类"(哲学上的)来,
只是我们并没有显示地告诉别人。
|
|