1. 程式人生 > >Java學習筆記第四天——面向物件

Java學習筆記第四天——面向物件

面向物件的思想: 面向物件是基於面向過程的程式設計思想

面向過程:強調的是每一個功能的步驟 面向物件:強調的是物件,然後由物件去呼叫功能

面向物件的思想特點: A:是一種更符合我們思考習慣的思想 B:可以將複雜的事情簡單化 C:將我們從執行者變成了指揮者

舉例: 買電腦: 面向過程:我要買電腦——我要明確買電腦的意義——上網查對應的引數資訊——去電腦城買電腦——討價還價——買回電腦 面向物件:我要買電腦——xx去給我買電腦——買回電腦

注意:兩個引用指向同一個堆記憶體,無論哪一個引用對堆記憶體進行操作,另一個就會受到影響

我們學習程式語言就是為了把現實世界的事物模擬出來,實現資訊化 我們是如何表現現實世界的事物的呢? 答: A:屬性 就是事物的描述資訊 B:行為 就是事物能夠做什麼

Java語言最基本的單位就是類,所以,我們在後面的學習過程中,是通過類來體現現實世界的事物的

類:是一組相關的屬性和行為的集合 物件:就是該事物的具體體現 舉例: 類: 學生 物件: 班長 類是如何和事物進行對應的呢? 類: 成員變數:和我們前面學習過的變數的定義是一樣的。 位置不同:類中,方法外 初始化值:不需要給初始化值

成員方法:和我們前面學習過的方法的定義是一樣的。 去掉static關鍵字

使用一個類,其實就是使用該類的成員。(成員變數和成員方法) 而我們要想使用一個類的成員,就必須首先擁有該類的物件 建立物件的格式:類名 物件名 = new 類名(); 成員變數:物件名,變數名 成員方法:物件名,方法名(…)

**成員變數和區域性變數的區別: A:在類中的位置不同 成員變數:類中,方法外 區域性變數:方法中或方法宣告上(形式引數) B:在記憶體中的位置不同 成員變數:堆記憶體 區域性變數:棧記憶體 C:生命週期不同 成員變數:隨著物件的建立而存在,隨著物件的消失而消失 區域性變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失 D:初始化值得問題 成員變數:有預設值 區域性變數:沒有預設值。必須先定義,賦值,最後使用**

通過物件直接訪問成員變數,會存在資料安全問題 **private關鍵字: 是一個修飾符可以修飾成員變數,也可以修飾成員方法 被private修飾的成員只能在本類中訪問 針對private修飾的成員變數,我們會相應的提供getXxx()和setXxx()用於獲取和設定成員變數的值,方法用public修飾**

如果有區域性變數名和成員變數名相同,在區域性使用的時候採用的是就近原則 如果重名的話使用this關鍵字解決這個問題 this:所代表的所在類的物件引用 使用場景:區域性變數隱藏成員變數

**構造方法:給物件的資料進行初始化 格式: 方法名和型別相同 沒有返回值型別,連void都不能寫 沒有具體的返回值 構造方法的注意事項: 1. 如果我們沒有給出構造方法,系統將會提供一個預設的無參構造方法供我們使用 2. 如果我們給出了構造方法,系統將不再提供預設的無參構造方法供我們使用 這個時候嗎,如果我們想使用無參構造方法,就必須自己提供 推薦:自己給無參構造方法 3. 構造方法也是可以過載的**

成員變數的賦值: A:setXxx()方法 B:帶參構造方法

構造方法格式:類名 物件名 = new 構造方法(….)

無參and有參eg:

package com.itnineday_07;
/*
 * 汽車類
 */
public class Car {
    private String brand;
    private int price;
    private String place;

    public Car(){};
    public void setBrand(String brand){
        this.brand = brand;
    }
    public String getBrand(){
        return brand;
    }
    public void setPrice(int price){
        this.price = price;
    }
    public int getPrice(){
        return price;
    }
    public void setPlace(String place){
        this.place = place;
    }
    public String getPlace(){
        return place;
    }

    public Car(String brand,int price,String place){
        this.brand = brand;
        this.price = price;
        this.place = place;
    }
}


package com.itnineday_07;
/*
 * 汽車類的測試類
 */
public class CarDemo {
public static void main(String[] args) {
    Car c = new Car();
    c.setBrand("奧迪");
    c.setPrice(300000);
    c.setPlace("西安");
    System.out.println(c.getBrand()+"---"+c.getPrice()+"---"+c.getPlace());

    Car c2 = new Car("賓士",400000,"天津");
    System.out.println(c2.getBrand()+"---"+c2.getPrice()+"---"+c2.getPlace());
}

}

如果方法的返回值是類名,其返回的就是該類的物件