最近學習Java物件導向方面的知識點,一直沒時間更新博客,因為這塊的知識點真的蠻繞的。一個知識點一個知識點的往外冒,而且對於我這個初學者來說區分構造器和方法就花費了一整天的時間。現在準備再重新過一遍知識點。
先背下來一個概念:
物件導向程式設計是將資料放在第一位的,然後再考慮操作資料的方法。在
之前,再學習Java的優越性的時候,我們知道了Java是一種物件導向設計的程式設計語言。那到底什麼是物件導向程式設計呢?要弄清楚它,首先我們簡單了解另一種程式設計。
一、流程程式設計程式設計:
以流程程式設計為自頂向下順序執行,逐步求精;其程式結構是依照功能劃分為若干個基本板塊,這些板塊形成一個樹狀結構;各模組之間的關係盡可能的簡單,在功能上相對獨立;每一板塊內部均是由順序、選擇和循環三種基本結構組成的;其板塊化實現的具體方法是使用與子程序。程序流程在寫入程式時就已決定。
(這個概念是我在學習物件導向時在網路上找的,我把它和物件導向程式設計的概念抄在一張白紙上,其實我也不知道啥是面向過程程式設計,但是,當我學完一遍面向對象和類之後,再回來看這個概念時,是有收穫的。沒學過面向過程也不敢多言,僅僅學了一遍面向對象更不敢多加評論了。依照我的理解就是面向過程就像把某件事情的所有工作流程都弄成環環相扣的了,牽一發而動全身 而面向對象呢,它很聰明,它像一個製造大型機械的廠家,零件啥的它不一定都自己弄,但是它可以用盡辦法去拼裝(當然,拼裝你也要遵循人家製定的規則),這樣的好處在於,想改那塊都不用擔心整個工程跟著受牽連,尤其是在客戶端那塊。範例,它已經取代了20世紀7年代的「結構化」過程化程式設計開發技術。物件導向就是把資料及對資料的操作方法放在一起,作為一個互相依賴的整體,我們就叫它物件。對同類對象抽像出其共通性,就形成了類別。類別中的大多數資料只能用於本類別的方法進行處理。類別透過一個簡單的外部介面與外界發生關係,物件與物件之間透過訊息進行溝通。程序流程由使用者使用中決定。 Java是完全物件導向的,必須熟悉OOP才能夠編寫Java程式。
(圖)示範物件導向程式設計與流程程式設計程式設計的不同##下面這句話很重要:物件導向的程式是由物件組成的,每個物件包含對使用者
公開的特定功能部分
和隱藏的實作部分。 (這句話真的太重要了,以後學習單例、封裝、抽象類別、介面的時候,就能體會的到了!)
三、類別#類別(class)是建構物件的模版或藍圖。由類別 建構(construct)物件的過程成為創建類別的實例(instance)。
在學習這裡的時候,不免會有些驚慌,那麼多類別都需要記住啊?自己還要創建類別?自己創建的類別裡面的內容能想全面嗎?種種疑惑在心裡揮之不去。其實啊,用Java寫的所有程式碼多位於某個類別的內部。標準的Java庫提供了數千類,可以用於使用者介面設計、日期、日曆和網路程式設計。儘管如此,我們在弄自己的專案時,也是需要根據具體情況的不同進行增加、刪除和改動的。四、封裝
封裝(encapsulation,有時候被成為資料隱藏),看影片課,他們把封裝形容問get、set方法。從形式上看,封裝不過是將資料和行為組合在一個套件中,並對物件的使用者隱藏了資料的實作方式。 物件中的資料稱為實例域(instance field),操作資料的過程稱為方法(method)。對於每個特定的類別實例(物件)都有一組特定的實例域值。這些值的集合就是這個物件的目前狀態(state)。下面這句話很重要,背下來:
實作封裝的關鍵在於絕對不能讓類別中的方法直接的存取其他類別的實例域。程式僅透過物件的方法與物件的資料進行互動。封裝給了物件『黑盒子』特徵,這是提高重用性和可靠性的關鍵。這意味著一個類別可以全面地改變儲存資料的方式,只要仍舊使用同樣的方法操作數據,其他物件就不會知道或介意所發生的變化。你的干擾了,你可以透過擴充一個類別來建立一個你需要的新類別。
#====封裝的過程:1.封裝是將屬性私有化(private);2.你要提供get/set方法(get/set不一定都提出來,具體看你自己的需求。權限: 存取符號#本類別中 | ##本套件中本包子類別中 | #外包子類別 | public(常用) | ||
可以存取 | 可以存取 | 可以存取 | #可以存取 | ||
##protected | 可以存取 | #可以存取 | 可以訪問 | 不可以存取 | |
可以存取 | ##預設省 | 可以存取 | 可以存取 | 可以存取 | #不可以存取 |
#private(常用) | 可以存取 | 不可以存取 | #不可以存取 | 不可以存取 |
# 程式碼範例:
###1 public class XiaoNanHai{2 private int age;3 public void setAge(int age){4 if(age>=15&&age<=35)5 this.age=age;}else{6 System.err.println"你输入的年龄不在指定范围内,请重新输入”);7 }8 }
以上是Java基礎-封裝的詳細內容。更多資訊請關注PHP中文網其他相關文章!