Java之 OOP编程思想理解1
OOP
所有的編程語言都提供抽象機制。可以認為,人們能夠解決問題的復雜性直接取決于抽象的類型和質量
·例如匯編語言和一些(非OOP)其他語言「如:BASIC、C等」都是主要針對計算機結構的抽象,所以在使用這些語言編程時,我們必須設法找到機器模型和實際待解問題模型的關聯。
·OOP思想的實質程序可以添加新類型的對象使自身適用于某個待解決的問題。因此,在閱讀解決方案代碼的同時,也是在閱讀問題的表述。即:只對問題進行抽象。
每個對象都有一個接口
·每個對象都只能滿足某些請求,這些請求由對象的接口所定義,決定接口的是類型。
每個對象都提供服務
·將對象想象為服務提供者,程序本身也是向用戶提供服務,它(程序本身)將通過調用其他對象提供的服務來實現這一目的。
· 所以,我們的目標是從現有代碼庫中尋找(優先)和自己創建能夠提供理想服務的一系列對象。
被隱藏的具體實現
·類創建者構建的類,只向客戶端程序員暴露必須的部分,而隱藏其它部分(即訪問控制)。
Reason1: 讓客戶端程序員無法觸及他們不該觸及的部分。
Reason2: 允許類創建者可以改變類內部的工作方式而不必擔心會影響到客戶端程序員。
實現復用
method 1: 直接使用該類的對象。
method 2: 組合產生新類(可以在不干擾現有客戶端代碼的情況下修改其成員)。
繼承
[繼承現有類型時,便創建了新類型。有兩種方法使得新類型與基類產生差異]
method1: (增加)直接在子類中添加新方法,即:子類“像是一個”父類。
method2: (覆蓋)只改變基類現有方法的行為,因為它和基類具有完全相同的借口,所以它和基類是“是一個”的關系。
向上轉型&單根繼承結構
·向上轉型后,能發出什么請求(能點出來什么)取決于基類是否有該接口,具體執行什么方法取決于對象的具體類型。
·單根繼承(除C++外的所有OOP語言都是這樣),簡化參數傳遞、垃圾回收器的實現、異常處理等。
參數化類型
·容器:一種持有其他對象引用的對象,如java中的List,Map,Set等。
·在使用容器時,一般有兩種儲存方案
一是在置入時,將所有的存儲對象向上轉型為一個更泛化的類型,這樣做雖然是安全的,但可能會丟失掉對象的許多實用接口;
二是從容器獲取對象時,將其向下轉型為將它置入容器時具有實用接口的對象,向下轉型是非常危險的。那么,我們需要創建這樣的容器,它知道自己所保存的對象類型,從而不需要向下轉型,以及消除犯錯誤的可能。這種解決方案被稱為參數化類型機制,參數化類型就是編譯器可以自動定制作用于特定類上的類。 在Java中,稱它為泛型。
對象的創建和生命周期
· 將對象置于堆?;蛳抻蜃兞炕蜢o態存儲區域來實現。這種方式將存儲空間的非配和釋放置于優先考慮位置。為了追求最大的執行速度,對象的存儲空間和生命周期可以在編寫程序時確定,但是犧牲了靈活性。
· 在被稱為堆堆內存池中動態的創建對象。對象的數量、生命周期、具體類型,只能在相關代碼執行的那一刻才能確定。因為存儲空間是在運行時被動態管理的,所以需要大量的時間在堆中分配存儲空間,這一般要遠遠大于在堆棧中創建存儲空間的時間,但其靈活性很高。
「Java完全采用了動態內存分配方式」
并發編程
· 線程是一種為單一處理器非配執行時間的手段。這可以使許多任務“同時”運行。
· 線程使得并發看起來非常簡單,但有一個問題:共享資源。 解決問題的方法:某個任務使用某資源時將該資源鎖定,完成其任務,然后釋放資源鎖,使其他任務可以使用這項資源。
總結
以上是生活随笔為你收集整理的Java之 OOP编程思想理解1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BIND的安装
- 下一篇: mysql vfp_vfp+mysql问