字体
关灯
   存书签 书架管理 返回目录
    “不对!不对!”
    就在所有人都沉浸在“继承”所带来的巨大震撼中时,一个尖锐的声音,打破了这片狂热。
    众人循声望去,说话的,是逻辑组的一位数学家,姓王,是国内顶尖的数理逻辑专家。
    他此刻正紧锁眉头,死死地盯着黄建功写下的那个“狗继承自动物”的简单例子。
    “黄老,您这个定义,有问题!”王教授毫不客气地指了出来。
    黄建功一愣:“有什么问题?”
    “问题大了!”王教授几步走到黑板前,用粉笔在“狗”的旁边,又写下了一个定义。
    `定义 猫 : 继承 动物 {`
    ` 方法: 喵喵叫();`
    `}`
    “按照您的理论,‘狗’是一种‘动物’,‘猫’也是一种‘动物’。”王教授说道,“现在,我有一个新的需求,我要创造一个‘机器狗’。它会跑,会叫,甚至长得也像狗。请问,我该如何定义它?”
    黄建功不假思索地回答:“那也简单。`定义 机器狗 : 继承 狗`,然后再给它增加一些‘充电’之类的方法。”
    “错!”王教授断然否定,“‘机器狗’继承了‘狗’,而‘狗’继承了‘动物’。那就意味着,‘机器狗’也继承了‘动物’的‘呼吸’和‘进食’方法。请问,一个机器人,它需要呼吸和进食吗?”
    黄建功的脸色一僵。
    这……确实是个问题。
    “这……我们可以重写‘呼吸’和‘进食’方法,让它们什么都不做。”有人在下面小声提议。
    “那本质上,它还是拥有了这两个它根本不应该有的‘行为’!”王教授的声音变得严厉起来,“这破坏了模型的纯洁性!一个不严谨的、可以随意打补丁的模型,最终必然会走向臃肿和混乱!”
    “再比如!”王教授不给众人思考的时间,又抛出了一个更尖锐的问题。
    “我们有一个‘鸟’类,它继承自‘动物’,并且有一个‘飞翔’的方法。现在,我们要定义一个‘企鹅’。‘企鹅’是一种‘鸟’,所以它应该继承‘鸟’。但是,企鹅会飞吗?不会!那它继承来的‘飞翔’方法,该如何处理?是删掉?还是让它报错?”
    “还有‘鸵鸟’!还有‘鸡’!”
    “这著名的‘鸟-企鹅问题’,是面向对象继承体系中,一个经典的逻辑困境!”
    王教授的这番话,像一盆冰水,浇在了刚刚还热情似火的众人头上。
    大家瞬

关闭+畅/阅读=模式,看最新完整内容。本章未完,请点击下一页继续阅读》》
上一章 目录 下一页