1、如何實現體現封裝性
乙個私有的資料域 ;
乙個公有的域訪問器方法 ;
乙個公有的域更改器方法 ;
public class test()
public date getdate( )
public void setname(string name )
public void setdate(date date )
}
2、這樣做的好處
這樣做要比提供乙個簡單的公有資料域複雜些 , 但是卻有著下列明顯的好處 :
第一, 可以改變內部實現 , 除了該類的方法之外 , 不會影響其他** 。 例如 , 如果將儲存名字的域改為 :
string firstname ;
string lastname ;
那麼 getname 方法可以改為返回
firstname + " " + lastname
對於這點改變 , 程式的其他部分完全不可見 。
第二點, 更改器方法可以執行錯誤檢查, 然而直接對域進行賦值將不會進行這些處理。 例如 , setname 方法可以檢查姓名是否為數字或者其他特殊字元。
在此特別提出注意的一點:不要編寫返回引用可變物件的訪問器方法 。 在 test 類中就違反了這個設
計原則 , 其中的 getdate 方法返回了乙個 date 類物件 。
date 物件是可變的 , 這一點就破壞了封裝性 ! 請看下面這段** :
test test = new test();
date d = test.getdate();
double tenyearsinmilliseconds = 10 * 365.25 * 24 * 60 * 60 * 1000 ;
d.settime(d.gettime()-(long)tenyearsinmilliseconds);
出錯的原因很微妙 。 d 和 test.date 引用同乙個物件,對d呼叫更改器方法就可以自動地改變這個物件的私有狀態 !!如圖:
如果需要返回乙個可變物件的引用 , 應該首先對它進行轉殖 ( clone ) 。 物件 clone 是指存放在另乙個位置上的物件副本。如下:
public date getdate( )
物件導向三大特性之封裝
物件導向的三大基本特徵 封裝 封裝是指將物件的實現細節隱藏起來,然後通過公共的方法來向外暴露該物件的事功能。繼承 即城市物件導向實現軟體服用的重要手段,當子類繼承父類後,子類是一種特殊的父類,能直接或間接獲得父類的成員。多型 多型是可以直接把子類物件賦給父類變數,但是執行時依然表現出子類的行為特徵,...
物件導向三大特性 封裝
封裝 a.什麼是封裝?封裝就是把每個物件的資料 屬性 和操作 行為 包裝在乙個類中。即可以被認為是乙個保護屏障,防止該類的 和資料被外部類定義的 隨機訪問。b.封裝的設計思想提 供對外的訪問介面,隱藏內部的實現方式 c.封裝的基本原則 1 類一般是public 2 屬性一般是private 3 構造...
python物件導向三大特性之封裝
封裝 類裡面不光有屬性還有方法。這種將屬性通過方法直接在類內部操作的形式就叫做封裝。把很多資料封裝到 個物件中,把固定功能的 封裝到 個 塊,函式,物件,打包成模組.這都屬於封裝的思想.封裝操作可以對受保護的成員進行功能開放的控制,達到保護資料不被非法訪問的目的。當然,方法也可以私有封裝,但是一般都...