加油吧,節奏得快點了
上篇幅也是講了這點,這篇幅就着重的講一下思想和案例 就拿買電腦來說吧,首先,你不懂電腦,你去電腦城買電腦,和大象裝冰箱裡一樣,是什麼步驟?咨詢 砍價 ,談妥了就那電腦走人,對吧,這就是面向過程的思想,而面向對象是:你有一個哥們,他懂電腦,什麼都會,你隻要帶他去,就行,你這個哥們就是對象,在java中,我們就是操作一個對象去完成各種各樣的操作的,這就是面向對象的思想
面向對象有三大特征
封裝
繼承
那具體是什麼意思呢? 我們開發的話,就是就是在找對象,沒有對象的話,就new 一個對象,對象和類,對象和對象都是有關系的,我們需要去維護 類就是生活中對事物的描述 對象就是這類事物實實在在存在的個體 需求:描述汽車(顔色,輪胎個數),描述事物就是在描述事物的屬性和行為 我們可以直接定義一個class
這樣大家看的懂嗎,我們猴子姐new一個car就可以

其實定義類,就是描述事物。就是在定義屬性和行為,屬性和行為共同成為類中的成員(成員變量)
其實局部變量我們一直在寫,他和成員變量的差別在于作用的範圍不一樣 我們以上述的例子
成員變量:作用在全局中
局部變量:作用在car類裡
在記憶體中的存儲和位置
成員變量在堆記憶體中,因為對象的存在才在記憶體中存在
局部變量在棧記憶體中
這是一個小知識點,匿名換句話其實就是沒有名字的意思
匿名對象是對象的簡化版
匿名對象兩種使用情況
當對對象方法僅進行一次調用的時候
匿名對象可以作為實際參數進行傳遞
我們用簡單的例子
可以看到我不起名字直接去更改num的值了,這就是匿名對象 第二種使用方式實際參數去傳遞,其實在上面我用到了
這樣就ok了
ok,終于說道我們的核心思想了encapsulation 封裝的含義:是指隐藏的對象的屬性和實作細節,僅對外提供通路方式 好處
将變化隔開
便于使用
提高複用性
提高安全性
封裝原則 将不需要對外提供的内容都隐藏起來; 把屬性都隐藏,提供對外通路方式 我們寫例子
這個就是最簡單的封裝了,你給我個字元串我就列印,過程你不必知道,函數本身就是一個最小的封裝體
私有的,怎麼使用?
我們現在的代碼是這樣寫的,輸出的結果
這裡我們直接通路了arg,這裡就存在了一個安全隐患,這裡也就是用到private修飾符去修飾arg了
在這裡,就看到一個錯誤提示了,因為我們用private修飾了之後,你就不能拿到了 private:私有,權限修飾符:用于修飾類中的成員(成員變量,成員函數) 注意的是,私有隻在本類中有效 那我們怎麼去通路呢?你既然私有了,就需要對外提供一個方法
我們這樣做,也是可以的
但是我們一般也不會這樣做,我們有規範
是以我們的完整代碼應該是這樣寫
輸出的結果
但是你要切記,注意,私有僅僅是封裝的一種表現形式; 我們之是以對外提供通路方式就是為了友善我們加入邏輯判斷語句,對通路的資料進行操作,提高代碼的健壯性
特點
函數名和類名相同
不用定義傳回值類型
不可以寫return語句
作用
給對象進行初始化
注意
預設構造函數的特點
多個構造函數是以重載的形式存在的
我們隻要new了,就執行了構造方法
對象一建立就會調用與之對應的構造函數 構造函數的作用:可以用于對對象的初始化 構造函數的小細節,當一個類中沒有定義構造函數時,系統預設給該類加入一個空參數構造方法 當該類定義了構造方法,那就預設的沒有了,構造方法用了重載
就是這樣,我們輸出
這裡提個小知識點來完結本篇幅 我們看一段代碼
想知道他的運作結果是什麼嗎
咦,為什麼方法都沒有名字,就運作了,這個{}就是構造方法嗎? 如果你代用多個構造方法的話你會發現他掉歐勇多次,這個現象,我們可以這樣解釋 構造代碼塊:
作用就是給對象初始化
而且優先于構造方法
和構造方法的差別:
構造代碼塊是給所有對象進行統一初始化
而構造函數是給對應的對象初始化
構造方法中定義的是不同對象共性的初始化内容(抽取)