2014-07-03 19 views
1

我正在閱讀Thinking in Java。關於訪問的章節(私人,公共等)。這是一本書的報價單:別名問題(對一個類中的私有對象的公共引用)

...只是因爲對某個對象的引用是一個類裏面 私營並不意味着其他一些對象不能有一個公共參考 同一個對象。

然後我們重定向到本書的在線補充,瞭解別名問題。

在官方網站上有本書的解決方案指南。但這對我來說很貴。

你能否澄清一下別名問題的含義,以便我可以更多地使用谷歌示例。

回答

5

下面是一個例子

public class Foo {} 
public class PrivateExample { 
    private Foo foo; 
    public PrivateExample (Foo foo) { 
     this.foo = foo; 
    } 
} 
public class PublicExample { 
    public Foo foo; 
} 
... 
// in some method 
Foo foo = new Foo(); 
PrivateExample privateExample = new PrivateExample(foo); 
PublicExample publicExample = new PublicExample(); 
publicExample.foo = foo; 

現在無論是PrivateExample實例和PublicExample實例具有相同的Foo對象的引用。請注意,即使該方法有對該對象的引用。因此,即使您無法通過PrivateExample實例訪問它,您也可以通過其他實體訪問它。這不一定安全。

+0

我正在寫同樣的例子。 +1。 –

+0

這被稱爲別名?我會說這是違反封裝原則。 – Michael

+0

@ user3475946可能有一些不太健康的封裝正在進行,但別名只是指有許多變量引用相同的對象。 –

相關問題