Re: [問題] 關於繼承
基本概念: 繼承的時候 會繼承父類別的一切(非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
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章