作者cplusplus (C++)
看板java
标题Re: [问题] 关於继承
时间Fri Mar 24 19:24:30 2006
基本概念: 继承的时候 会继承父类别的一切(非static)的成员
包含那些private属性的成员(只是你不能用 但还是存在)
所以其实你的子类别里面已经有了那个成员 若此时你再次宣告同名称的成员
会产生遮蔽效应(shadow) 不是取代(replace)
你的例子里 父类别的method 传回的是父类别的成员 注意 就只是Car的OILSIZE
就算你在子类别中宣告了另一个同名变数OILSIZE 两个OILSIZE其实也是不同的东西
所以期待method会找到你"心目中"正确的变数 其实不会 也不可能
因为两个OILSIZE根本是不同变数 只是名称相同罢了 :)
所以 是呀 virtual一下吧~
不过其实看你的设计 这些double变数应该是常数 constant 吧?(全大写 :P?)
这样的话 你可以设为static 比较合乎设计理念
如果不是constant的话 这种设计就怪怪的了
如果不是constant 每个实体都有一份自己的OILSIZE 应该使用protected继承
子类别可以直接修改 或是父类别提供getter/setter以供存取
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.217.14