作者htl74421 (<><鱼仔<>< 薰~)
看板PHP
标题Re: [请益] class继承问题
时间Fri Jul 12 10:46:55 2013
※ 引述《tkdmaf (皮皮快跑)》之铭言:
: ※ 引述《htl74421 (<><鱼仔<>< 薰~)》之铭言:
: : 我在 child 的 test() 中呼叫 father 的 get_data(), 但 father 没有,所以我想应该
: : 会跳错误出来,可是它的结果却是再往上去找到 grandfather 的 get_data(),所以是采用
: : 无限上纲的方式? 往上一直找到有为止?
: : 这个样子的话那如果中间是继承了好几层然後又有人去覆写,这样不就会造成我想的
: : get_data()不见得一定就是我想的那个,可能中间有人做了其它修改,这样不就会大乱了吗?
: 我们先弄清楚关系,我就用中文解释了。
: 祖父→父亲→孩子
: 父亲继承了祖父,所以父亲本身就会有祖父「全部」的特性。
: 孩子再继承了父亲,孩子就会有父亲和祖父「全部」的特性。
: 但继承不代表方法要一致。
: 所以你可以改写父亲的动作。
: 如果你在父类别修正了遗传过来的某个方法。
: 那麽子类别再使用父类别或是本身的方法时,就是直接带用父类别修改过的方法。
: 这个做法叫做「覆载」。
: 事实上,你就算不写$a->test();
: 而是写$a->get_data();
: 也是会有结果的。
: 简单来说,如果继承体无法具备等同於被继承体的完全特性的话。
: 那根本就不用设计「继承」这个动作了。
: 你这还只是一直线的直系血亲。
: 还没扯到哥哥、弟弟、姊姊、妹妹。
: 这些兄弟姊妹才是做为继承很重要的因素。
: 另外你还有伯伯、叔叔、阿姨、姑姑。
: 这还没另外再扯到表兄弟姐妹。
: 很明显的,继承这件事是一门很大的血缘关系呢!
: 当然你问我说能不能偷抱人家的孩子回来教育?
: 这当然是可以的。
: 你就思考一下整个概念罗。
感谢回答 ^^
目前我碰到的情况是原程式只下了一句 parent:get_data() ,然後我往上找了四代才找
到 get_data() 在哪里, 原本我以为只是到上一代去找而已...
这样我就想到这中间如果有人不晓得底下有人去找原来的 get_data() 而又创了一个
那到了最下面的人不就惨了?
所以说是不是要修正写法改指定是哪一代的 get_data() 这样比较保险?
谢谢 ^^"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.39.133.25