作者 | fcamel (飛啊!falling的小駱駝) | 看板 | P_fcamel |
標題 | [Java] java的封裝層級 (information hidden) |
時間 | Mon Feb 16 00:48:56 2004 |
public > protected > default(package-private) > private
public和private不用多提,
java新建的package級別常讓人搞混,
若不打key word, 以java的術語視為default access,
或稱為package-private會較好懂
這會造成同一package內的class可存取, 但外部不能,
而protected可以讓同package的其它class存取,
不同package可透過inheritance取存取, 所以它的範圍比default大
這點對其它OOPL來說, protected的意思可能會造成混淆
由於有package的觀念, Java不需要類似C++的friend,
在使用上或許較易了解
ex: 以下的例子裡, 可正確編譯和執行
// a/he.java, 需放在目錄a下編譯和執行
package a;
public class he
{
protected int p = 5;
int d = 1; // default access
}
// a/la.java, 需放在目錄a下編譯和執行
package a;
public class la
{
public void print()
{
he h = new he();
System.out.println(h.p);
System.out.println(h.d);
}
}
import a.*;
class hehe extends he
{
public void print()
{
System.out.println(p); // protected field可透過inheritance取得
//System.out.println(d); // compilation error
}
}
public class t
{
static public void main(String[] args)
{
hehe hh = new hehe()
hh.print();
la a = new la();
a.print();
}
}
|