封裝

一個類就是一種數(shù)據(jù)類型
引用數(shù)據(jù)類型:類渊抄,數(shù)組,接口,定義一個類是一種數(shù)據(jù)類型

例子:自定義一個類

 class Person{
   String name;
   int age;
}  

上面這個類就是一種數(shù)據(jù)類型需五,那么就是叫做 :Person數(shù)據(jù)類型

一、封裝的概念

封裝:封裝就是保護(hù)程序內(nèi)部結(jié)構(gòu)的安全轧坎。

例子:

class Person{ 
  String name;
  int age;
  double  height;//身高
  public  void  getInfo(){ 
    System.out.println("名字是:"+name+", 年齡是:"+age+", 身高是:"+height);
  } 
} 
public class Demo{
   public static void main(String[] args){
       Person per=new Person();
       per.name="SMITH";//直接訪問類的屬性
       per.age=-12;//直接訪問類的屬性
       per.height=178.0;
       per.getInfo();
   }
}

結(jié)果:

名字是:SMITH, 年齡是:-12, 身高是:178.0

上面的代碼在語法上沒任何錯誤警儒,但是在邏輯業(yè)務(wù)上存在問題,因?yàn)橐粋€年齡不可能是負(fù)數(shù)眶根,之所以出現(xiàn)負(fù)數(shù)蜀铲,根本的原因是:

可以在類的外部直接訪問類的屬性, 那么如果需要將類的屬性設(shè)置為外部不可見属百,就要將這些屬性使用關(guān)鍵字private封裝记劝,封裝后的屬性只能在類的內(nèi)部直接訪問。

例子:使用關(guān)鍵字private 封裝屬性

class Person{ 
   private  String name;//將屬性封裝
   private  int age;   //封裝屬性
   private  double height;//身高
   public  void  getInfo(){ 
     System.out.println("名字是:"+name+", 年齡是:"+age+", 身高是:"+height);
   } 
} 
public class Demo{
    public static void main(String[] args){
        Person per=new Person();
        per.name="SMITH";
        per.age=-12;
        per.height=178.0;
        per.getInfo();
    }
}

上面代碼確實(shí)被封裝了族扰,不能在類的外部直接訪問厌丑,但是一個屬性如果不能訪問操作,那么就失去了原有的意義渔呵,

所以我們要在類的內(nèi)部提供一個訪問這些屬性的接口(方法)怒竿,每個屬性都要對應(yīng)提供兩個方法:
·setter方法:負(fù)責(zé)設(shè)置屬性 (set+第一個單詞大寫的屬性名稱)
·gtter方法: 負(fù)責(zé)取得屬性 (get+第一個單詞大寫的屬性名稱)
方法的命名規(guī)則遵循駝峰原則:除了第一個單詞之外,后面的每個單詞的單詞的第一個字母必須大寫扩氢。

例子:在setter方法中編寫邏輯判斷代碼

 class Person{ 
   private  String name;//將屬性封裝
   private  int age;   //封裝屬性
   private  double height;//身高
   public void setName(String name){ //name屬性的setter方法
       this.name=name;
   } 
   public String getName(){     //name屬性的getter方法
     return this.name;
   } 
   public  void setAge(int age){ 
      if(age<0){ 
        this.age=10; 
      } else{
         this.age=age;
      }
   } 
   public int getAge(){ 
     return this.age;
   } 
   public void setHeight(double height){ 
     this.height=height;
   } 
   public double getHeight(){ 
     return this.height;
   } 
   public  void  getInfo(){ 
     System.out.println("名字是:"+name+", 年齡是:"+age+", 身高是:"+height);
   } 
} 
public class Demo{
    public static void main(String[] args){
        Person per=new Person();
        per.setName("張三");
        per.setAge(-14);
        per.setHeight(178);
        per.getInfo();
    }
}

上面的代碼我們在setter方法中做了邏輯判斷(用來做數(shù)據(jù)驗(yàn)證)耕驰,但是在開發(fā)中數(shù)據(jù)的驗(yàn)證有專門的第三方輔助類來完成,不會在setter方法中去書寫录豺,那么為什么要寫上setter和gtter方法呢朦肘?這需要在后面很久以后的學(xué)習(xí)中才解釋饭弓。

總結(jié):
·封裝的概念:封裝就是為了保護(hù)程序內(nèi)部的安全性
·類中的屬性一旦使用private關(guān)鍵字封裝之后,就要提供setter和gtter方法
·setter和getter方法的命名規(guī)則:
|—set+首寫字母大寫的屬性名
|-get+首寫字母大寫的屬性名
·我們在命名方法名稱的的時候遵循駝峰原則媒抠,同時要見其名知其意

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弟断,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趴生,更是在濱河造成了極大的恐慌阀趴,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苍匆,死亡現(xiàn)場離奇詭異舍咖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锉桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門排霉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人民轴,你說我怎么就攤上這事攻柠。” “怎么了后裸?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵瑰钮,是天一觀的道長。 經(jīng)常有香客問我微驶,道長浪谴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任因苹,我火速辦了婚禮苟耻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扶檐。我一直安慰自己凶杖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布款筑。 她就那樣靜靜地躺著智蝠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奈梳。 梳的紋絲不亂的頭發(fā)上杈湾,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音攘须,去河邊找鬼漆撞。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叫挟。 我是一名探鬼主播艰匙,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼限煞,長吁一口氣:“原來是場噩夢啊……” “哼抹恳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起署驻,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奋献,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旺上,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓶蚂,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年宣吱,在試婚紗的時候發(fā)現(xiàn)自己被綠了窃这。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡征候,死狀恐怖杭攻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疤坝,我是刑警寧澤兆解,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站跑揉,受9級特大地震影響锅睛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜历谍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一现拒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧望侈,春花似錦具练、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岂丘,卻和暖如春陵究,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奥帘。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工铜邮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓松蒜,卻偏偏與公主長得像扔茅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秸苗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.面向?qū)ο笕筇匦?-封裝性 -繼承性 -多態(tài)性 2.什么是封裝 封裝性就是隱藏實(shí)現(xiàn)細(xì)節(jié),僅對外公開接口。 3....
    夢夜繁星閱讀 1,092評論 0 6
  • 提問:是否理解為什么緊密耦合是一個很大的問題檀咙? 緊密耦合的組件會讓代碼難以維護(hù)雅倒,比如上面的代碼如果需要改變產(chǎn)品就會...
    江將蔣醬閱讀 1,572評論 1 3
  • 我曾經(jīng)看著鏡子問過自己,以后的自己會在干嘛弧可,未來又會怎么樣呢蔑匣? 當(dāng)時吧,我的想法很天真棕诵,很憧憬的說道:‘未來我會...
    安心玲閱讀 163評論 0 1
  • 人生的奔跑裁良,不在于瞬間的爆發(fā),取決于途中的堅(jiān)持年鸳,你縱有千百個理由放棄趴久,也要找一個理由堅(jiān)持?下處,所有的努力?搔确,不是...
    杏郁閱讀 170評論 0 0
  • 下了班的周五晚上膳算,同事們都相繼下班了座硕,白天此起彼伏的電話鈴聲、打印機(jī)高速運(yùn)轉(zhuǎn)的聲音也都慢慢消失了涕蜂。偌大的辦公室只...
    freecati閱讀 595評論 3 5