Java面向?qū)ο蟾攀?/h1>
發(fā)表時(shí)間:2024-01-18 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要](如今的程序領(lǐng)域,大家都在說,面向?qū)ο驩OP,但是真正能理解面向?qū)ο蟮暮x的程序員卻很少,究竟什么是對(duì)象,怎樣面向?qū)ο? 一.面向?qū)ο螅骸 ?.何謂對(duì)象:在面向?qū)ο蟪绦蛟O(shè)計(jì)中,我們將問題空間中的元素以及他們?cè)诜桨缚臻g中的的表示物稱作對(duì)象(object) Alan Kay總結(jié)了smalltal...
(如今的程序領(lǐng)域,大家都在說,面向?qū)ο驩OP,但是真正能理解面向?qū)ο蟮暮x的程序員卻很少,究竟什么是對(duì)象,怎樣面向?qū)ο?
一.面向?qū)ο螅?br>
1.何謂對(duì)象:在面向?qū)ο蟪绦蛟O(shè)計(jì)中,我們將問題空間中的元素以及他們?cè)诜桨缚臻g中的的表示物稱作對(duì)象(object)
Alan Kay總結(jié)了smalltalk中對(duì)象的5大基本特征:
所有的東西都是對(duì)象。
程序是一大堆對(duì)象的集合,他們通過消息傳遞,各個(gè)對(duì)象之間知道要做些什么。
每個(gè)對(duì)象都分配有自己的存儲(chǔ)空間,可容納其他對(duì)象。
每個(gè)對(duì)象都有一個(gè)類型。
同一類的所有對(duì)象能接收相同的消息。
-----而所有的編程語言的最終目的是提供一種抽象方法----
2.對(duì)象的接口:我們向?qū)ο蟀l(fā)出請(qǐng)求是通過它的接口定義的,對(duì)象的類型決定了它的接口形式。
3.OOP中唯一關(guān)心的: 就是接口是什么,就像汽車的發(fā)動(dòng)機(jī)一樣,我們不必要知道它的結(jié)構(gòu)是什么,只要它能工作就行了。所有的程序是由一定的屬性(數(shù)據(jù))和行為(方法)組成的,不同的對(duì)象訪問通過函數(shù)調(diào)用來完成,對(duì)象間的所有交流都是通過方法調(diào)用,通過對(duì)封裝數(shù)據(jù)對(duì)象,很大程度上提高復(fù)用率。
4.對(duì)象的3個(gè)主要特征:
behavior—說明這個(gè)對(duì)象能做什么。
State—當(dāng)對(duì)象施加方法時(shí)對(duì)象的反映。
Identity---與其他相似行為對(duì)象的區(qū)分標(biāo)志,每一個(gè)對(duì)象有唯一的indentity, 而這3者是相互影響的。
5.面向?qū)ο笾凶钪匾乃枷?就是類,類是模板是藍(lán)圖,從類中構(gòu)造一個(gè)對(duì)象,即創(chuàng)建了一個(gè)類的實(shí)例。(類好比一個(gè)建材市場(chǎng),其中有許多子類--各種各樣的裝飾材料,而我們裝修自己的房子就要選擇我們需要的材料,(為了建立我們自己的程序,我們必須選 擇我們需要的類)這個(gè)比喻可以很形象的解釋類是什么。
6.類之間的關(guān)系:
依賴關(guān)系:use-a A類中的一個(gè)方法操作了另一個(gè)類中的對(duì)象。
聚合關(guān)系:has-a A類中的對(duì)象包含B類的對(duì)象。
繼承關(guān)系:is-a A繼承了B類,此時(shí)A類不僅有了B類的方法,還加入了自己的方法。以便我們創(chuàng)建我們自己需要的對(duì)象。
Java中定義的每一個(gè)類都必須繼承另一個(gè)類,使用關(guān)鍵字extends,如果一個(gè)類在定義中不現(xiàn)實(shí)使用關(guān)鍵字extends,這個(gè)類就會(huì)隱式繼承Object類。Object類又叫根超類,或基類。,我們從根超類繼承來的叫子類。Java中每個(gè)類都是根超類的子類。
8.接口(interface)規(guī)定了可對(duì)特定的對(duì)象發(fā)出哪些請(qǐng)求。
9.繼承=重新使用接口:創(chuàng)建出一個(gè)數(shù)據(jù)類型后,當(dāng)需要新建立一個(gè)數(shù)據(jù)類型去實(shí)現(xiàn)相同的功能,是很沒有意義的一件事,此時(shí)對(duì)其克隆后,再根據(jù)情況改進(jìn)實(shí)現(xiàn)自己的目的就是繼承。
10.封裝:就是把數(shù)據(jù)和行為結(jié)合在一起在一個(gè)包中,并對(duì)對(duì)象使用者隱藏?cái)?shù)據(jù)的實(shí)現(xiàn)過程。Java用3個(gè)關(guān)鍵字來設(shè)置邊界,從而進(jìn)行對(duì)數(shù)據(jù)的隱藏。Public(共有)的定義任何人都可使用.private(私有)意味著除你自己,類型創(chuàng)建者及那個(gè)類型的內(nèi)部函數(shù)成員可以訪問外其他任何人使用都會(huì)產(chǎn)生錯(cuò)誤。Friendly(友好)
意味在包(package)中是可以訪問的。(以上過程也可叫方案隱藏)
11.引用(Handle)操控對(duì)象:
當(dāng)創(chuàng)建一個(gè)引用時(shí)必須要對(duì)其進(jìn)行初始化
例: String s=”happy”(未建立連接)
String s=new string(“happy”)與一個(gè)新的對(duì)象連接使用new 。此句建立了一個(gè)引用,并且連接引用并初始化對(duì)象 賦值字符串“happy”.
12.對(duì)象的創(chuàng)建及存在時(shí)間:數(shù)據(jù)存放的地點(diǎn)
1:寄存器-速度快,數(shù)量少,在cpu內(nèi)部,我們對(duì)寄存器沒有控制權(quán)。
2:堆棧:駐留長(zhǎng)規(guī)內(nèi)存中,堆棧指針下移建立新的內(nèi)存,上移釋放內(nèi)存。
3:堆:常用內(nèi)存池,保存對(duì)象,有極大的靈活性,java的數(shù)據(jù)就存放在此,但是要以時(shí)間及效率為代價(jià)。Java的對(duì)象建立是在程序運(yùn)行時(shí)才決定。而c++是在設(shè)計(jì)時(shí)建立對(duì)象。
對(duì)象的生存時(shí)間(lifetime)java提出的垃圾收集器可以很好的發(fā)現(xiàn)無須再用的對(duì)象,使用GC(grabage collector)垃圾收集器。清除對(duì)象,釋放內(nèi)存。
為此我們就要付出一定的運(yùn)行期的開銷。
13.在此我們就會(huì)有這樣一個(gè)印象,一個(gè)程序只是一系列對(duì)象的集合,他們的方法將其他對(duì)象作為自己的變量使用.
14.主要類型: java的主要類型有:boolean,char,byte,short,int,long,float,double,void.這些主類型的大小都不隨機(jī)器的結(jié)構(gòu)變化而變化,提供了java很好的可移植性.
15.字段方法:字段又叫數(shù)據(jù)成員,成員函數(shù)又叫方法,java的全部工作就是定義類,制作累得對(duì)象及發(fā)送消息.
16.一個(gè)程序只是一系列對(duì)象的集合,他們的方法將其他的對(duì)象作為自己的變量使用,而且將消息發(fā)給那些對(duì)象.
17.名字的可見性:為了使名字不重復(fù),作者可以定義自己的庫,一般用自己域名的倒寫形式 如: COM.:Leeak.utility.foidles
18.static關(guān)鍵字:即使沒有創(chuàng)建對(duì)象,也需要一愕能調(diào)用的方法,此時(shí)可以使用static
19.java.lang默認(rèn)自動(dòng)的導(dǎo)入每個(gè)java程序中
20.OOP中對(duì)象使對(duì)屬性和方法的封裝,對(duì)象具有信息的隱蔽的性質(zhì),對(duì)細(xì)節(jié)的隱藏,對(duì)象只需要知道去這樣做,而不知道如何做的細(xì)節(jié),類的方法應(yīng)謹(jǐn)慎控制對(duì)java數(shù)據(jù)的訪問,可以用get讀取方法,用set修改方法.
21:pakage:Java API中每個(gè)類和接口屬于一個(gè)特定的包,包實(shí)際上市對(duì)類和接口進(jìn)行組織的目錄結(jié)構(gòu),提供了一種軟件復(fù)用機(jī)制.
22.創(chuàng)建可復(fù)用的類得步驟:1.定義一個(gè)public類
2.選擇一個(gè)包名,并把pakage語句加到可復(fù)用的類的源碼中.
3.編譯這個(gè)類.
4.把可復(fù)用的類導(dǎo)入其他程序中即可.
23.java中提出在類定義的括號(hào)外的僅有2個(gè)語句,pakage和import.
24.軟件的復(fù)用性,軟件的復(fù)用性就是利用紫的已有的,定義良好的的經(jīng)過仔細(xì)測(cè)試的文檔清晰的可移植的易于獲得的軟件構(gòu)件開發(fā)新的軟件.
以上就是java面向?qū)ο蟮囊恍┗拘g(shù)語的概述,其中的有些部分可以擴(kuò)展的更深,看過think in java的 朋友就會(huì)有此種感覺.此文章向?qū)Τ鯇W(xué)者闡述了面向?qū)ο蟮幕靖拍?對(duì)已是java程序員的朋友可以對(duì)他們的基本知識(shí)做以回顧.