Java複習筆記(八)面向對象

面向對象

一、萬物皆對象

  人類從小就不斷的接觸到各種各類存在世界上的各種生物,然後通過事物的公共特性,將它們歸類,所以以後就不會出現見到貓叫老虎。那麼我們在現實生活中,是通過具體的某個事物歸納總結它們的公共特性然後產生類那麼類就描述了該種事物的類別、共性,相當於造事物的圖紙,我們可以根據這個圖紙去做出具體的實體對象。

類和對象

對象:在現實生活中存在具體的一個事物。;
類:實際就是對某種類型事物的共性屬性與行爲的抽取。
人類認識世界: 對象—-類。
在java中: 類 —–對象。

使用計算機語言就是不斷的在描述現實生活中的事物。
java中描述事物通過類的形式體現,類是具體事物的抽象,概念上的定義。
對象即是該類事物實實在在存在的個體。
類與對象的關係如圖

可以理解爲:
類就是圖紙
汽車就是堆內存中的對象

二、面向對象的概述

  “面向對象”(英語:Object Oriented,簡稱OO)是一種以事物爲中心的編程思想。
  面向對象程序設計(英語:Object-oriented programming,縮寫:OOP),是一種程序開發的方法。它將對象作爲程序的基本單元,將程序和數據封裝其中,以提高軟件的重用性、靈活性和擴展性。
  面向對象時相對於面向過程而已的(c則是一個典型的面向過程的語言),站在面向對象的角度去看問題,你則是對象的動作的指揮者。如果站在面向過程的角度去看問題,你則是動作的執行者。

三、面向對象與面向過程對比

1.思考方式

  面向過程:分析解決問題所需要的步驟,通過分別去實現對應的函數來完成每一個步驟,使用的時候一次去調用對應的函數即可;

  面向對象:面向對象的是把所處理的問題先抽象起來,以對象爲中心封裝成不同的類,然後在實例化成具體的對象,來描述某個事物在整個解決問題中的行爲。

2.實現方式

面向對象:將所要描述的事物進行高度抽象化

面向過程:採取自頂向下、逐步細化的方式

3.優缺點比較

面向過程:

  優點:性能相對優於面向對象,因爲不需要面向對象類的實例化開銷那樣消耗資源;

  缺點:難以維護,複用,擴展;

面向對象:

  優點:易維護、複用、擴展,系統使用靈活方便;

  缺點:性能低於面向過程;

四、對象

  對象(object)代表現實世界中可以明確標識的一個實體。例如:一個學生、一張桌子、一間教室,一臺電腦都可以看做是一個對象。每個對象都有自己獨特的狀態標識和行爲 。

  對象的屬性(attribute,或者狀態(state)),學生有姓名和學號,該學生特有的姓名和學號就是該學生(對象)的屬性。
  對象的行爲(behavior),是由方法定義,調用對象的一個方法,其實就是給對象發消息,要求對象完成一個動作。可以定義學生對象具備學習的行爲。學生對象可以調用學習的方法,執行學習的動作

五、面向對象的特徵

1.封裝(encapsulation)
2.繼承(inheritance)
3.多態(polymorphism)

六、使用java來描述事物

通過Java語言定義一個汽車類,並生產出汽車,有顏色,輪胎個數, 有運行的功能。

  如何描述現實世界中的事物,描述該事物的屬性和行爲,汽車具有顏色和輪胎數的屬性,具備運行的行爲。如何使用Java語言進行轉換?

根據對應關係:
屬性:類中的成員變量
行爲:類中的成員函數
那麼定義Java類就是定義一個類的成員。汽車類具備的成員是:顏色,輪胎數,運行方法。

public class Car {
    String color;// 成員變量
    int num; // 成員變量

    // 成員函數
    void run() {
        System.out.println(color + "的車有" + num + "個輪胎,可以跑");
    }
}

七、對象的創建

創建Car對象
1. 使用new關鍵詞,就像new數組一樣
2. 需要給型的汽車起一個名字,car
3. 變量都是有類型的,car屬於什麼類型,屬於Car類型,叫做類類型
4. Car car=new Car();
圖紙畫好了,類定義成功了。如何根據圖紙生產汽車,在Java中如何根據類來生產一個對象。
Java中生產汽車比較簡單,通過一個關鍵字”new”, 通過 new Car(); 就在內存中產生了一個實體,汽車對象就生產出來了。
汽車對象生產出來後,還沒有名字,爲了方便使用,需要起一個名字。就用小寫的C 來表示新車的名字。
Java中的變量都需要有類型。那麼c 是什麼類型呢?c 是Car類型,所以c也叫做類類型變量。

class Main {
    public static void main(String[] args) {
        Car c = new Car();
        c.run(); 
    }
}

八、對象成員的調用

對象調用是指對:1. 成員變量 2. 成員方法 的調用。

public class Main {
    public static void main(String[] args) {
        Car c = new Car();
        int num=c.num; 
        System.out.println(num);
        c.num = 4;
        c.color = "black";
        c.run();
    }
}

九、局部變量和成員變量

1.定義

  成員變量: 定義在類中變量
  局部變量: 定義在方法中變量

2.成員變量與局部變量的區別:

(1)應用範圍
成員變量在整個類內都有效
局部變量只在其聲明的方法內有效

(2)生命週期
  成員變量: 它屬於對象,它隨着對象的創建而創建,隨着對象的消失而消失
  局部變量: 使用完馬上釋放空間。

(3)存儲位置
  成員變量屬於對象,它存儲在堆內,堆內的實體,當沒有引用指向其時,才垃圾回收清理
  局部變量存在棧內存中,當不在使用時,馬上就會被釋放。

(4)初始值
  成員變量它存儲在堆中,如果沒有賦初值,它有默認值。

    整數byte、short、int、long =0;
    char='\uoooo';
    boolean =flase;
    String =null;
    類類型 =null;
    數組 =null;

  局部變量,如果要想使用必須手動初始化.

    i.  方法中,參數列表中,語句中。
    ii. 必須給初始化值,沒有初始值,不能使用
    iii.    在棧內存中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章