面向?qū)ο笫?a href="http://m.survivalescaperooms.com/article.asp?typeid=160">java語言的核心。是對應(yīng)于面向過程而言的。
- 面向過程:強(qiáng)調(diào)的是過程,即動(dòng)作。在java中動(dòng)作就是函數(shù)。C語言就是面向過程的。
如:把大象裝進(jìn)冰箱需要幾步?
答:需要三步:
- 打開冰箱
- 把大象裝進(jìn)去
- 關(guān)上冰箱
我們把上面的問題,用面對對象的思想來考慮。
我們把冰箱作為一個(gè)對象,它具備打開,存儲,關(guān)閉的功能。這個(gè)時(shí)候,我們就只需要冰箱這個(gè)對象就可以完成把大象裝進(jìn)冰箱中。即,冰箱打開,存儲,冰箱關(guān)閉。
- 面向?qū)ο蟮奶攸c(diǎn):
- 面向?qū)ο笫且环N常見的思想,符合人們的思考習(xí)慣。
- 面向?qū)ο蟮某霈F(xiàn),把復(fù)雜的東西簡單化了。
- 面向?qū)ο蟮某霈F(xiàn),讓面向過程中的執(zhí)行者變成了面向?qū)ο笾械闹笓]者。
我們可以用類(class)來描述事物的特點(diǎn),一般需要定義屬性和行為。
如:我們可以創(chuàng)建一個(gè)Car類用來描述轎車類。
class Car{ int trieNum;//定義轎車類的輪胎數(shù) String paintColor;//定義轎車類的噴漆顏色 //定義一個(gè)轎車行駛的行為 void run(){ System.out.PRintln(trie+"個(gè)輪胎“+paintColor+”色的轎車正在行駛..."); }}接下來,我們使用new關(guān)鍵字來創(chuàng)建一個(gè)Car類的對象,來執(zhí)行行駛的行為。
class Test{ public static void main(String[] args){ Car myCar = new Car();//通過new關(guān)鍵字來創(chuàng)建一個(gè)Car類的對象,用Car類型的變量來接收 myCar.trieNum = 4;//設(shè)置Car對象的輪胎數(shù)為4 myCar.paintColor = "red";//設(shè)置Car對象的顏色為"red" myCar.run();//用創(chuàng)建的Car類對象來執(zhí)行行駛方法 }}程序運(yùn)行的結(jié)果為:4個(gè)輪胎red色的轎車正在行駛...
注意:類的對象在堆內(nèi)存中,所以類的屬性都有相應(yīng)的默認(rèn)值,即使不設(shè)置輪胎數(shù)和顏色,也可以運(yùn)行,結(jié)果為:0個(gè)輪胎null色的轎車正在行駛...
考慮如下代碼在內(nèi)存中分配
Car c1 = new Car();Car c2 = c1; c1.trieNum = 5;c2.paintColor = "red";c1.run();說明:第一句代碼,在棧內(nèi)存中創(chuàng)建一個(gè)Car類型的c1變量,接著在堆內(nèi)存中創(chuàng)建一個(gè)Car類的實(shí)例對象,并分配一個(gè)地址值,在這個(gè)實(shí)例中,有兩個(gè)變量,分別是int型的trieNum和String類型的paintColor并初始化為0和null;最后把這個(gè)地址值賦給c1.
第二句代碼是說把c1的值,即指向堆內(nèi)存中實(shí)例的地址值,賦值給c2,這樣c1和c2同時(shí)指向了堆內(nèi)存中的同一個(gè)實(shí)例。
然后用c1或c2操作時(shí),其實(shí)操作的是一個(gè)對象,所以最后運(yùn)行c1的run方法,得到的結(jié)果是:5個(gè)輪胎red色的轎車正在行駛...
1.作用域:
- 局部變量定義在函數(shù),語句,局部代碼塊中,只有在所屬的區(qū)域有效。
- 成員變量定義在類中,整個(gè)類的范圍都可以訪問。
2.內(nèi)存中的分布:
- 局部變量存在于棧內(nèi)存的方法區(qū)中。
- 成員變量存在于堆內(nèi)存中的實(shí)例對象中。
3.存活的時(shí)間:
- 成員變量隨著對象的創(chuàng)建而存在,隨著對象的消失而消失。
- 局部變量隨著所屬區(qū)域的執(zhí)行而存在,隨著所屬區(qū)域的結(jié)束而釋放。
4.默認(rèn)初始化值:
- 成員變量都有默認(rèn)初始化值。
- 局部變量沒有默認(rèn)初始化值。
新聞熱點(diǎn)
疑難解答
圖片精選