熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

面向對象三大特性之封裝

2013-11-23 18:47:58  來源: Java核心技術 

  java學習已經到了最核心的章節面向對象的三大特性封裝繼承和多態接下來會寫多篇博文(數目不定請關注近期博客吧!午飯們!)來總結這裡面的每一個細節小可很希望每一篇文章的闡述會給你帶來一點啟發小可也是在學習的道路上摸索也希望各位大牛給點指導性的建議
    還是先從下面的代碼說起吧!
    package comivantianCoreFengZhuang;
    import static javalangSystem*;
    //
    class Wife{
    private String name;
    private double hight;
    private double weight;
    //構造函數
    Wife(String namedouble hightdouble weight){
    thisname   = name;
    thishight  = hight;
    thisweight = weight;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    thisname = name;
    }
    public double getHight() {
    return hight;
    }
    public void setHight(double hight) {
    thishight = hight;
    }
    public double getWeight() {
    return weight;
    }
    public void setWeight(double weight) {
    thisweight = weight;
    }
    //
    public void washClothes(){
    outprintln(thisgetName()+ 給我洗衣服
    }
    //
    public void cookDinner(){
    outprintln(thisgetName()+ 給我燒飯吃
    }
    //
    public boolean beautiful(){
    if((thishight<= && thishight>=)&&(thisweight<= && thisweight>=)){
    outprintln(thisgetName()+ is My favorite!
    return true;
    }else{
    outprintln(thisgetName()+ 不是我的菜
    return false;
    }
    }
    }
    public class FindWife {
    public static void main(String[] args) {
    //實例化三個奇女子
    Wife fengjie    = new Wife(鳳姐
    Wife furong     = new Wife(芙蓉姐姐
    Wife xiaoyueyue = new Wife(小月月
    //鳳姐能不能為你洗衣服?
    if(fengjiebeautiful()){
    fengjiewashClothes()
    okDinner()
    }
    outprintln(=====================
    if(xiaoyueyuebeautiful()){
    xiaoyueyuewashClothes()
    okDinner()
    }
    //讓小月月改變
    xiaoyueyuesetHight(//小月月增高成功
    xiaoyueyuesetWeight(//小月月成功減肥
    //小月月也成美女了
    outprintln(=====================
    if(xiaoyueyuebeautiful()){
    xiaoyueyuewashClothes()
    okDinner()
    }
    //芙蓉姐姐 還不錯
    outprintln(=====================
    if(furongbeautiful()){
    furongwashClothes()
    okDinner()
    }
    }
    }
    //輸出結果如下
    鳳姐 不是我的菜
    =====================
    小月月 不是我的菜
    =====================
    小月月 is My favorite!
    小月月 給我洗衣服
    小月月 給我燒飯吃
    =====================
    芙蓉姐姐 is My favorite!
    芙蓉姐姐 給我洗衣服
    芙蓉姐姐 給我燒飯吃
    從上面的一個簡單的事例代碼看你做了哪些封裝?不難回答類的私有數據(又叫做屬性就是說你要找老婆的基本特征外貌等)當你找老婆的時候無法直接操作她的身高體重年齡只能通過方法beautiful()來判斷當然你不知道Wife類中還有那些私有數據知道判斷標准就足夠了
    所以說封裝的主要目的就是隱藏對象細節將對象當做黑盒進行操作 比如有三個奇女子實例供我們選擇會調用Wife類的構造函數但是並知道構造函數的細節之後呢你要判斷奇女子那個更適合你你就調用了beautiful()函數來判斷所以要操作對象一律得通過類提供的方法調用
    private也可以用在方法和構造函數的聲明上私有方法或構造函數通常是類內部某個共享的演算的流程外界不用知道私有方法的存在

  綜上所述小可可以認為有以下三種封裝形式
    一封裝對象的初始流程
    構造函數實現了對象初始化的封裝比如代碼如沒有構造函數Wife(){}對的函數名稱和類的寫法一樣只能是void類型默認是public屬性可以為private(後面會專門一篇文章來談構造函數的)
    【privatepublic還有一個protected 等權限修飾符會在後面的章節詳細總結
    若是沒有你new一個對象的時候要反反復復的將事例的屬性寫一篇比較浪費代碼空間構造函數將類屬性封裝起來一句就可以解決如代碼中
    如果不寫構造函數的在實例化對象的時候JVM會默認創建一個沒有參數的構造函數
封裝對象操作流程
    這裡就不難理解了函數或者稱為行為動作均可以就是用來操作屬性的比如判斷是不是美女的函數beautiful()比如身高體重在那個范圍三圍在那個范圍才算是MM是西施還是東施……
    再 如你找到了老婆調用了getName()獲得了美女的芳心她便把自己的基本屬性信息交給你了她還可以幫你洗衣服做晚餐等等這些都是類Wife的操作流程
    //
    public void washClothes(){
    outprintln(thisgetName()+ 給我洗衣服
    }
    //
    public void cookDinner(){
    outprintln(thisgetName()+ 給我燒飯吃
    }
封裝對象內部數據
    因為Wife類的基本信息在你得到她的芳心之前都是私有的你是不知道的但是她為了讓你了解她於是提供了取值方法(Getter)這樣你便可以得到她的基本信息保證了改奇女子信息的安全性
    所以說封裝在某種程度上也保證了數據的安全
    當然了當你們在一起了你可以讓她減肥或者增高當然要征得她同意來滿足你的視覺效果Setter當然private類型的數據還有它的訪問范圍(後面還會接著說)在同一個類中還是可以訪問的如例子中手動來修改小月月童鞋的體重讓她符合你的口味
    //讓小月月改變
    xiaoyueyuesetHight(//小月月增高成功
    xiaoyueyuesetWeight(//小月月成功減肥
    封裝的初步認識就到這裡雖然是初步但封裝的基本概念已經講完了!


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25750.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.