Re: [問題]如何限定類別的函式成員的參數
※ 引述《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
02/04 21:30, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):