作者adrianshum (Alien)
看板java
标题Re: [问题]如何限定类别的函式成员的参数
时间Sat Feb 2 12:34:32 2013
※ 引述《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)
1F:推 byend:赞一个, 让 API定义明确, 是 OO 很重要的一环 02/04 21:30