繼承的getter and setter

看板java作者 (perry tsai)時間8年前 (2016/03/05 22:04), 編輯推噓1(108)
留言9則, 4人參與, 最新討論串1/1
class Father1 { private int number = 0; public int getNum() { return number; } public void setNum(int number) { this.number = number; } } class Son1 extends Father1 { private int number = 200; } public class TestPolymorphismEx11 { public static void main(String[] args) { Father1 a = new Son1(); System.out.println(a.getNum()); } } //run完結果為0 想請問如何繼承Father的getter setter方法來存取Son的屬性 我思考是private是同class下才能存取,也就是必定要做Son的getter跟setter。 但如果Son有大量時每個都設置不是DRY很嚴重嗎? 請問有什麼解法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.213.96 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1457186691.A.081.html

03/05 22:26, , 1F
在Son的constructor加上setNum(200);就好了
03/05 22:26, 1F

03/05 22:26, , 2F
感激
03/05 22:26, 2F

03/05 22:31, , 3F
不過這樣修改的會是Father的number不是嗎?
03/05 22:31, 3F

03/05 22:55, , 4F
想通了XD
03/05 22:55, 4F

03/05 23:30, , 5F
繼承就是為了不用每個子類都寫一次,一開始就不該有son的
03/05 23:30, 5F

03/06 00:12, , 6F
你要用的Father的成員變數,何必在Son再來一次呢XD
03/06 00:12, 6F

03/06 10:07, , 7F
考SCJP的題目之類的吧,你就在Son 一樣宣告getter/setter
03/06 10:07, 7F

03/06 10:07, , 8F
override的method,然後return super.xxx 或 this.xxx
03/06 10:07, 8F

03/06 10:09, , 9F
實務上通常不會在子類別重覆宣告相同名稱的field
03/06 10:09, 9F
文章代碼(AID): #1MskU321 (java)