第一章---对象导论
第一章???對象導論
1.1??抽象過程:
1)萬物皆為對象
程序是對象的集合,他們通過發送消息來告知彼此要做的事:想要請求一個對象,就必須向該對象發送一條消息,可以把消息想象成對某個特定對象的方法的調用請求
1.2??每個對象都有一個接口:
1.3??每個對象都提供服務:
當正在試圖開發或理解一個程序設計時,最好的方法就是講對象想象成“服務提供者”。程序本身將向用戶提供服務,他將通過調用其他對象提供的服務來實現這一目標
1.4??被隱藏的具體實現:
將程序開發人員按角色分為類創建者(那些創建新數據類型的程序員)和客戶端程序員(那些在其應用中使用數據類型的類消費者)是大有裨益的,java用三個關鍵字在類的內部設定邊界:public,private,protected。Public表示緊隨其后的元素對任何人都是可用的,private表示除類型的創建者和類型的內部方法之外任何人都不能訪問的元素,protected--繼承的類可以訪問
1.5??復用具體實現:
一旦類被創建并測試完成,那么他就應該代表一個有用的代碼單元,他就可供復用,代碼的復用是面向對象程序設計語言的優點之一。
最簡單的復用某個類的方式就是直接使用該類的一個對象,此外也可以將那個類的一個對象置于某個新的類中,我們稱之為“創建一個成員對象”。新的類可以由任意數量,任意類型的其他對象以任意可以實現新的類中想要的功能的方式所組成。因為是在使用現有的類合成新的類,所以被稱為組合,如果組合是動態發生的通常被稱為聚合,組合經常被視為“has-a(擁有)”的關系,就像汽車擁有引擎。
新類的成員對象通常被聲明為private,使得使用新類的客戶端程序員不能訪問他們。這也使得你可以在不干擾現有客戶端代碼的情況下修改這些成員,也可以在運行時修改這些成員對象,以實現動態修改的行為,實際上在建立新類時首先應該考慮組合因為他更加簡單靈活。
1.6??繼承:
?
以現有類為基礎,復制他然后添加和修改這個副本來創建一個新類,繼承使用基類型和導出類型的概念表示了這種類型之間的相似性
?當繼承現有類型時也就創造了新的類型,包括現有類型的所有成員(盡管private成員被隱藏并且不可訪問),而且重要的是它復制了基類的接口,
有兩種方法可以使基類型和導出類產生差異:1,直接在導出類中添加新的方法。2,覆蓋,直接在導出類中創建該方法的新定義--我正在使用相同的接口方法,但是我想在新類型中做些不同的事。
1)?“是一個”與“像是一個”關系??
對于繼承的爭論:繼承只覆蓋基類的方法,這樣基類和導出類是完全相同的類型--純粹替代,這被描述為is-a關系
但是有時必須在導出類中添加新的接口元素,這樣就擴展了接口,基類無法訪問新添加的方法,這種情況用is-like-a來描述???????????????????
1.7??伴隨多態的可互換性:
在處理類型的層次結構時,經常把一個對象不當做他所屬的特定類型來對待,而是當做基類的對象來對待,這樣可以編寫出不依賴于特定類型的代碼?,這樣的代碼是不會受添加新類型影響的。 ???????????????
1.8??單根繼承結構:
在單根繼承結構中所有對象都有一個共同的接口,他們歸根結底都是相同的基本類型,單根繼承結構保證所有對象都具備某些功能,因此你知道在你的系統中你可以在每個對象上執行某些基本操作,列如所有對象都可以在堆上創建,單根繼承結構使得垃圾回收器的實現變得容易很多,不會因為無法確定對象的類型而陷入僵局
1.9??容器:
通常來說,如果不知道在解決某個問題時需要多少個對象,或者他們將存活多久,那么就不能存儲這些對象,也不知道要多少空間來存儲這些對象,這類信息只有在運行時才能獲得,java提供了各種類型的容器來滿足不同的需求,列如List(用于存儲序列),Map(也被稱為關聯數組,用來簡歷對象之間的關聯),set(每種對象類型只持有一個),以及隊列,樹,堆棧的構件。
1.9.1?參數化類型
在javaSE5之前,容器存儲的對象都只是object類型,要使用這樣的容器,只需要在其中置入對象的引用,然后取回,但是由于容器之存儲Object,所以對象會被向上轉型為Object,因此它會丟失身份,這里取回時要用到向下轉型
1.10??對象的創建和生命周期:
1.11??異常處理:
1.12??并發編程:
1.13??Java與Internet:
1.14??總結:
轉載于:https://www.cnblogs.com/syg13129953117/p/7904412.html
總結
以上是生活随笔為你收集整理的第一章---对象导论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下管理交换分区
- 下一篇: Python回顾与整理10:模块