面向對象是java語言的核心。是對應于面向過程而言的。
- 面向過程:強調的是過程,即動作。在java中動作就是函數。C語言就是面向過程的。
如:把大象裝進冰箱需要幾步?
答:需要三步:
- 打開冰箱
- 把大象裝進去
- 關上冰箱
我們把上面的問題,用面對對象的思想來考慮。
我們把冰箱作為一個對象,它具備打開,存儲,關閉的功能。這個時候,我們就只需要冰箱這個對象就可以完成把大象裝進冰箱中。即,冰箱打開,存儲,冰箱關閉。
- 面向對象的特點:
- 面向對象是一種常見的思想,符合人們的思考習慣。
- 面向對象的出現,把復雜的東西簡單化了。
- 面向對象的出現,讓面向過程中的執行者變成了面向對象中的指揮者。
我們可以用類(class)來描述事物的特點,一般需要定義屬性和行為。
如:我們可以創建一個Car類用來描述轎車類。
class Car{ int trieNum;//定義轎車類的輪胎數 String paintColor;//定義轎車類的噴漆顏色 //定義一個轎車行駛的行為 void run(){ System.out.PRintln(trie+"個輪胎“+paintColor+”色的轎車正在行駛..."); }}接下來,我們使用new關鍵字來創建一個Car類的對象,來執行行駛的行為。
class Test{ public static void main(String[] args){ Car myCar = new Car();//通過new關鍵字來創建一個Car類的對象,用Car類型的變量來接收 myCar.trieNum = 4;//設置Car對象的輪胎數為4 myCar.paintColor = "red";//設置Car對象的顏色為"red" myCar.run();//用創建的Car類對象來執行行駛方法 }}程序運行的結果為:4個輪胎red色的轎車正在行駛...
注意:類的對象在堆內存中,所以類的屬性都有相應的默認值,即使不設置輪胎數和顏色,也可以運行,結果為:0個輪胎null色的轎車正在行駛...
考慮如下代碼在內存中分配
Car c1 = new Car();Car c2 = c1; c1.trieNum = 5;c2.paintColor = "red";c1.run();說明:第一句代碼,在棧內存中創建一個Car類型的c1變量,接著在堆內存中創建一個Car類的實例對象,并分配一個地址值,在這個實例中,有兩個變量,分別是int型的trieNum和String類型的paintColor并初始化為0和null;最后把這個地址值賦給c1.
第二句代碼是說把c1的值,即指向堆內存中實例的地址值,賦值給c2,這樣c1和c2同時指向了堆內存中的同一個實例。
然后用c1或c2操作時,其實操作的是一個對象,所以最后運行c1的run方法,得到的結果是:5個輪胎red色的轎車正在行駛...
1.作用域:
- 局部變量定義在函數,語句,局部代碼塊中,只有在所屬的區域有效。
- 成員變量定義在類中,整個類的范圍都可以訪問。
2.內存中的分布:
- 局部變量存在于棧內存的方法區中。
- 成員變量存在于堆內存中的實例對象中。
3.存活的時間:
- 成員變量隨著對象的創建而存在,隨著對象的消失而消失。
- 局部變量隨著所屬區域的執行而存在,隨著所屬區域的結束而釋放。
4.默認初始化值:
- 成員變量都有默認初始化值。
- 局部變量沒有默認初始化值。
新聞熱點
疑難解答