游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1085|回复: 1

对类和接口的思考

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2009-4-8 00:53:00 | 显示全部楼层 |阅读模式
程序员们常常对类,接口相关的种种问题争论不休。
这里分为两块:
1 哲学上说的"类"是什么东西
2 编程语言中的class,interface是什么东西

1 “类”就是多个事物共同具有的特性
2 interface,class帮助程序员明确代码中的"类",以及减少程序员的工作量。
但,就算没有class,interface,
甚至没有其他的任何代码重用手段或任何设计模式,
程序中仍然可以编写出"类",只是需要写太多重复枯燥的代码

我列举几个错误的观点:

> 哲学上说的"类",在编程中,应当是interface,
而class则即包括类,又包括可重用的实现代码
这看起来很正确,特别是现在的编程都强调区分interface和class
没错,哲学上在说道"人类""黄种人""大人"的时候,都是抽象的东西,
而我们没有看到"人类""黄种人""大人"存在某种实体。
所以我们可能会说“哲学上的类在编程中就是interface,
而class则即包括哲学上的类,又包括可重用的实现代码”
其实这是片面的认识,如果我们把"黄种人"再继续分类下去可以有:
"中国的黄种人"->"汉族的黄种人"->"长得很帅的汉族的黄种男性"
->... ...->"张三"
有人说,“张三”怎么是一个"类"呢?不是实例么?
1 哲学上没有“实例”一说
2 "张三"可以继续细分"昨天的张三"->"昨天在编程的张三"->...

> 哲学上说的"类",在编程中,就是代码重用
这看起来是一个对哲学,编程认识很深而发出的观点
没错,编程中,类模板是"类的类",函数模版是"函数的类",
还有class也是当然是类,还有接口类,此外甚至循环代码等也是类。
没错,被重用的代码,是编程中的类,但编程中的类不仅仅是被重用的代码。
证据是:
1 如果你复制粘贴代码,那它肯定是"类",但它到底算不算代码重用?
2 就算不做任何代码重用或复制粘贴,也可以写出同样作用的代码,
而分析这些代码就可以看出,里面可以归纳出一些"类"(哲学上的)来,
只是我们并没有显示地告诉别人。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2009-4-8 01:08:00 | 显示全部楼层

Re:对类和接口的思考

总结一下:

> 重用的代码必然是代码中的"类",但代码中的"类"不一定是重用的代码
> 代码中出现的"类",不一定是代码所实现的东西中的类
(这里"类"都是指哲学上的"类")

以上几条我认为概括地非常精炼、恰到好处,可以解决不少人的疑惑。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 17:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表