2016-02-27 61 views
3

玩這是一類Encapsulate具有公共財產和公共方法。確實訪問修飾符有任何作用,在封裝

class Encapsulate 
{ 
    public int a; 
    public int b; 

    public static void main(String...s) 
    { 
    Encapsulate e = new Encapsulate(); 
    e.setVar(10,20); 
    System.out.println(e.getSome()); 
    } 

    public void setVar(int a, int b) 
    { 
    this.a = a; 
    this.b = b; 
    } 

    public int getSome() 
    { 
    return a + b; 
    } 
} 

OOP概念Encapsulation跟在這裏?

我相信,因爲二者都是在一個類粘合在一起是適用的,可能是我們可以稱之爲弱封裝但封裝。

但我不知道如何來證明這一點,因爲我的搜索表明,類屬性應該是私有的。

更新:在默認訪問說明符的情況下什麼。

+0

引用來訪問屬性我不知道,如果真的是正確的,但通常我說*數據隱藏*和*封裝*是相關的,但不相同。 – meskobalazs

+0

這可能很有趣:http://programmers.stackexchange.com/questions/173547/what-is-the-difference-between-data-hiding-and-encapsulation – meskobalazs

+0

如果我是綁定屬性和方法使用公共訪問說明符,比其他類隱藏起來並且結合在一起(這就是封裝),除了其他類實例化或擴展它們。 –

回答

1

我dissagree。封裝指的是隱藏的數據只能通過同一對象上的方法來操作,它使封裝有意義:

Java中的封裝是封裝數據(變量)和代碼作用於數據的機制(方法)一起作爲單個單位。在封裝中,一個類的變量對其他類是隱藏的,並且只能通過它們當前類的方法訪問,因此它也被稱爲數據隱藏。

看看這裏,正確解釋。 http://www.tutorialspoint.com/java/java_encapsulation.htm

3

繼承人另一個例子是封裝隱藏數據

軟件對象是概念上類似於現實世界的對象:他們也包括狀態和相關的行爲。對象將其狀態存儲在字段(某些編程語言中的變量)中,並通過方法(某些編程語言中的函數)公開其行爲。方法對對象的內部狀態進行操作,並作爲對象到對象通信的主要機制。隱藏內部狀態並要求通過對象方法執行所有交互被稱爲數據封裝 - 數據封裝 - 面向對象編程的基本原則。

這基本上意味着你應該改變的屬性,以私人的訪問修飾符和允許通過方法

https://docs.oracle.com/javase/tutorial/java/concepts/object.html