一、為何要引入封裝性? 程式設計的重點是追求高內聚、低耦合: > 高內聚:類的內部數據操作細節自己完成,不允許外部干涉 > 低耦合:僅對外暴露少量的方法用於使用 隱藏對象內部的複雜性,只對外公開簡單的介面。便於外界調用,從而提高系統的可擴展性、可維護性。 二、問題的引入 當我們創建一個類的對象以後, ...
一、為何要引入封裝性?
程式設計的重點是追求高內聚、低耦合:
> 高內聚:類的內部數據操作細節自己完成,不允許外部干涉
> 低耦合:僅對外暴露少量的方法用於使用
隱藏對象內部的複雜性,只對外公開簡單的介面。便於外界調用,從而提高系統的可擴展性、可維護性。
二、問題的引入
當我們創建一個類的對象以後,我們可以通過"對象.屬性"的方式,對對象的屬性進行賦值。這裡,賦值操作要受到屬性的數據類型和存儲範圍的制約。除此之外,沒其他制約條件。但是,在實際問題中,我們往往需要給屬性賦值加入額外的限制條件。這個條件就不能在屬性聲明時體現,我們只能通過方法進行限制條件的添加。(比如:setLegs()同時,我們需要避免用戶再使用"對象.屬性"的方式對屬性進行賦值。則需要將屬性聲明為私有的(private).此時,針對屬性就體現了封裝性。
三、封裝性思想的具體體現
體現一:將類的屬性xxx私化(private),同時,提供公共的(public)方法來獲取(getXxx)和設置(setXxx)此屬性的值
class Person{ private String name; private int age; public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
體現二:不對外暴露的私有的方法
體現三:單例模式(將構造器私有化)
體現四:如果不希望類在包外被調用,可以將類設置為預設的。
四、Java規定的四種許可權修飾符
說明:
①4中許可權都可以用來修飾類的內部結構:屬性、方法、構造器、內部類
②修飾類的話,只能使用預設、public
作者:Java之美
日期:2020-03-28