Re: [問題]如何限定類別的函式成員的參數

看板java作者 (Alien)時間13年前 (2013/02/02 12:34), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《Makoto0813 (多愁善感的中學二年級生)》之銘言: : 大家好,我在設計類別的時候遇到一些問題想請教版上的各位前輩 : 我寫了一個類別,我想在這類別之下加入一個函式成員 : 我想限制該函式專門用來處理自己類別的成員變數 : 請問能否限定該函式只能接收該類別之下的成員變數呢? : 譬如: : public class A : { : int a , b; : public A() : { : 初始化a跟b : } : public int fun(只能用來自a或b的值) : { : ..... : } : } 要是你不想 caller 隨意傳東西進 fun, 那麼你 根本不該把功能設計成這樣子。 試想想你是 class A 的使用者,你從何得知 fun(int) 的 意圖是只該你傳該 instance 的 a/b attribute? 其實要解決很簡單,把你的想法轉一轉就行了。乾脆 就把你的功能設計成: public class A { int a; int b; public int funByA() { return this.funInternal(this.a); } public int funByB() { return this.funInternal(this.b); } private int funInternal(int) { // 你原本的 fun() } } 這樣做最重要的目的是單從 interface 本身,用家就 能知道你的意圖,同時,也把內部的資料作更好的 encapsulation,因為你應該避免讓用家去取你的 內部資料 (e.g. aObj.fun(aObj.a) )  -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.19.42.175 ※ 編輯: adrianshum 來自: 223.19.42.175 (02/02 14:59) ※ 編輯: adrianshum 來自: 223.19.42.175 (02/02 15:00)

02/04 21:30, , 1F
讚一個, 讓 API定義明確, 是 OO 很重要的一環
02/04 21:30, 1F
文章代碼(AID): #1H39TRZs (java)
討論串 (同標題文章)
文章代碼(AID): #1H39TRZs (java)