天天看點

JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊

加油吧,節奏得快點了
上篇幅也是講了這點,這篇幅就着重的講一下思想和案例 就拿買電腦來說吧,首先,你不懂電腦,你去電腦城買電腦,和大象裝冰箱裡一樣,是什麼步驟?咨詢 砍價 ,談妥了就那電腦走人,對吧,這就是面向過程的思想,而面向對象是:你有一個哥們,他懂電腦,什麼都會,你隻要帶他去,就行,你這個哥們就是對象,在java中,我們就是操作一個對象去完成各種各樣的操作的,這就是面向對象的思想
面向對象有三大特征

封裝

繼承

那具體是什麼意思呢? 我們開發的話,就是就是在找對象,沒有對象的話,就new 一個對象,對象和類,對象和對象都是有關系的,我們需要去維護 類就是生活中對事物的描述 對象就是這類事物實實在在存在的個體 需求:描述汽車(顔色,輪胎個數),描述事物就是在描述事物的屬性和行為 我們可以直接定義一個class
這樣大家看的懂嗎,我們猴子姐new一個car就可以
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
其實定義類,就是描述事物。就是在定義屬性和行為,屬性和行為共同成為類中的成員(成員變量)
其實局部變量我們一直在寫,他和成員變量的差別在于作用的範圍不一樣 我們以上述的例子

成員變量:作用在全局中

局部變量:作用在car類裡

在記憶體中的存儲和位置

成員變量在堆記憶體中,因為對象的存在才在記憶體中存在

局部變量在棧記憶體中

這是一個小知識點,匿名換句話其實就是沒有名字的意思

匿名對象是對象的簡化版

匿名對象兩種使用情況

當對對象方法僅進行一次調用的時候

匿名對象可以作為實際參數進行傳遞

我們用簡單的例子
可以看到我不起名字直接去更改num的值了,這就是匿名對象 第二種使用方式實際參數去傳遞,其實在上面我用到了
這樣就ok了
ok,終于說道我們的核心思想了encapsulation 封裝的含義:是指隐藏的對象的屬性和實作細節,僅對外提供通路方式 好處

将變化隔開

便于使用

提高複用性

提高安全性

封裝原則 将不需要對外提供的内容都隐藏起來; 把屬性都隐藏,提供對外通路方式 我們寫例子
這個就是最簡單的封裝了,你給我個字元串我就列印,過程你不必知道,函數本身就是一個最小的封裝體
私有的,怎麼使用?
我們現在的代碼是這樣寫的,輸出的結果
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
這裡我們直接通路了arg,這裡就存在了一個安全隐患,這裡也就是用到private修飾符去修飾arg了
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
在這裡,就看到一個錯誤提示了,因為我們用private修飾了之後,你就不能拿到了 private:私有,權限修飾符:用于修飾類中的成員(成員變量,成員函數) 注意的是,私有隻在本類中有效 那我們怎麼去通路呢?你既然私有了,就需要對外提供一個方法
我們這樣做,也是可以的
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
但是我們一般也不會這樣做,我們有規範
是以我們的完整代碼應該是這樣寫
輸出的結果
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
但是你要切記,注意,私有僅僅是封裝的一種表現形式; 我們之是以對外提供通路方式就是為了友善我們加入邏輯判斷語句,對通路的資料進行操作,提高代碼的健壯性
特點

函數名和類名相同

不用定義傳回值類型

不可以寫return語句

作用

給對象進行初始化

注意

預設構造函數的特點

多個構造函數是以重載的形式存在的

我們隻要new了,就執行了構造方法
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
對象一建立就會調用與之對應的構造函數 構造函數的作用:可以用于對對象的初始化 構造函數的小細節,當一個類中沒有定義構造函數時,系統預設給該類加入一個空參數構造方法 當該類定義了構造方法,那就預設的沒有了,構造方法用了重載
就是這樣,我們輸出
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
這裡提個小知識點來完結本篇幅 我們看一段代碼
想知道他的運作結果是什麼嗎
JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊JAVA之旅(四)——面向對象思想,成員/局部變量,匿名對象,封裝 , private,構造方法,構造代碼塊
咦,為什麼方法都沒有名字,就運作了,這個{}就是構造方法嗎? 如果你代用多個構造方法的話你會發現他掉歐勇多次,這個現象,我們可以這樣解釋 構造代碼塊:

作用就是給對象初始化

而且優先于構造方法

和構造方法的差別:

構造代碼塊是給所有對象進行統一初始化

而構造函數是給對應的對象初始化

構造方法中定義的是不同對象共性的初始化内容(抽取)

繼續閱讀