java基礎篇(一) ----- java面向對象的三大特性之封裝


 
java面向對象的三大特性之封裝:
 
封裝(Encapsulation)是面向對象的一個重要特征,就是把對象的屬性和操作(或服務)結合為一個獨立的整體,並盡可能隱藏對象的內部實現細節。
 
通俗的講所謂封裝就是將屬性和方法捆綁到一起,封裝到一個對象中去,  形成一個不可分割的獨立單位,以及盡可能隱藏對象的內部結構,也就是說,如果我們使用了封裝技術的話,別人就只能用我們做出來的東西而看不見我們做的這個東西的內部結構了。
 
如果形容一個人(假設把人看做一個類),我們可以用姓名、年齡,性別等來描述,如果不封裝我們需要三個變量來形容他,在面向對象中可以用一個person類來封裝這些屬性,person具有三個成員變量 ,name,age,sex,創建的時候每當生成一個這樣的類的對象,就具有這3個屬性。
 
還可以這么想 比如一部電腦主機,他就是封裝起來,你可以通過一些方法改變他里面的狀態,而又不需要了解他的原理,比如我按下開機鍵,我會知道我按下這個鍵,電腦就會啟動,而不需要了解他怎么運行
 
   對於封裝而言,一個對象它所封裝的是自己的屬性和方法,所以它是不需要依賴其他對象就可以完成自己的操作。
 
    什么是封裝?

封裝就是將屬性私有化,提供公有的方法訪問私有屬性。

做法就是:修改屬性的可見性來限制對屬性的訪問,並為每個屬性創建一對取值(getter)方法和賦值(setter)方法,用於對這些屬性的訪問。

 

如:private String name;

public String getName(){

            return;

           }

        public void setName(String name){

          this.name=name;

           }

    為什么要封裝、封裝有什么作用? 

通過封裝,可以實現對屬性的數據訪問限制,同時增加了程序的可維護性 ;

 

由於取值方法和賦值方法隱藏了實現的變更,因此並不會影響讀取或修改該屬性的類,避免了大規模的修改,程序的可維護性增強。

 

 

對象的數據封裝特性還可以把對象的私有數據和公共數據分離開,保護了私有數據,減少了可能的模塊間干擾,達到降低程序復雜性、提高可控性的目的。

 

 

 

封裝的好處與具體實現步驟

*實現封裝的步驟:

(1)修改屬性的可見性來限制對屬性的訪問。

(2)為每個屬性創建一對賦值方法和取值方法,用於對這些屬性的訪問。

(3)在賦值和取值方法中,加入對屬性的存取限制。

**為了實現良好的封裝性,我們通常將類的成員變量聲明為private,再通過public的方法來對這個變量進行訪問。對一個變量的操作,一般都有讀取和賦值操作,我們分別定義兩個方法來實現這兩種操作,一個getXxx( )(Xxx表示要訪問的成員變量的名字),用來讀取這個成員變量操作,另外一個是setXxx()用來對這個成員變量賦值。**如果外面的程序可以隨意修改一個類的成員變量,會造成不可預料的程序錯誤,就象一個人的身高,不能被外部隨意修改,只能通過各種攝取營養的方法去修改這個屬性。

 

public class AccpTeacher{
private String name;
private int age;
public String getName(){
return name;

}
public void setName(String name){
this.name = name;

}
public int getAge(){
return name;

}
public void setName(String age){
if(age>200){
System.out.println("年齡不符合,太大!");
}else{
this.age = age;

}
}


****封裝的優點:

(1)隱藏類的實現細節,良好的封裝能夠減少耦合;

(2)讓使用者只能通過事先定制好的方法來訪問數據,可以方便地加入控制邏輯,限制對屬性的不合理操作,保證了程序的安全性;

(3)便於修改,增強代碼的可維護性;

 

 參考資料:http://blog.csdn.net/chenssy/article/details/12757911(在此處學習不少感謝

 

本人學習總結所用,如有紕漏錯誤之處請指正,定虛心學習改正!謝謝。

 不為失敗找借口,只為成功找方法!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM