類與物件(二)方法與過載

2021-10-06 13:42:59 字數 2019 閱讀 6836

類中建的方法分為有參的方法和無參的方法倆種:

簡單來說就是呼叫的時候可以找到不同的方法,例如:

我們new乙個物件:

demo d=new demo()

d.showinfo(1);

接下來我們說一下傳遞引數,用乙個例子說明:

這題的輸出結果是什麼?

這題的答案是8-----19

為什麼呢?這裡我們講一下基本資料型別和引用資料型別的區別。

基本資料型別int ,int乙個n=8,然後根據上面所說的引數,將n值賦值給num,num此時等於8,+1後等於9.重點來了,為什麼最後輸出的結果不是9而是8呢?因為,我們傳遞的是8這個值,把n=8的這個值傳遞出去後,sum接收了數值然後在空間裡開闢了乙個新的記憶體位址,和n不相同的記憶體位址。進行一番+1操作後,n的值還是8,也就是說 sum不論等於多少都不影響n=8.沒有改變,所以最後的結果是8.那麼為什麼stu的值又是19了呢?

因為,student不是乙個基本資料型別,他是引用資料型別,他所傳遞的資訊是記憶體位址,也就是說,當stu等於18+1之後,他和原先的18所在的記憶體位址是相同的,輸出後,直接找到了這個記憶體位址,也就是19.

接下來我們說一下構造方法:

什麼是構造方法?

構造方法是一種特殊的方法,它是乙個與類同名且無返回值型別的方法。物件的建立就是通過構造方法來完成,其功能主要是完成物件的初始化。當類例項化乙個物件時會自動呼叫構造方法。構造方法和其他方法一樣也可以過載。

建構函式的結構式:修飾符 類名(引數列表)

沒有返回值型別。

建構函式沒有別的作用,就是初始化成員變數。就這麼記憶就可以了。

在上面的**中我們用到了成員變數和區域性變數,那麼什麼是成員變數什麼又是區域性變數呢?

成員變數是寫在類中的,他的作用域是整個類,也就是說整個類都是使用這個變數,而成員變數是在這個類裡面的某乙個方法中的,他的作用域只有在那個方法裡。

非常的好理解。如果成員變數和區域性變數的名字相同,又想把區域性變數的值賦值個成員變數的時候怎麼做呢?我們可以用this關鍵字。

通過:this.name=name的方法到達目的。

成員變數和區域性變數區別:

(1)在類中定義的變數叫作成員變數,在方法中定義的變數叫作區域性變數。

(2)區域性變數宣告賦值以後在使用,成員變數可以不賦值,值就是預設值。例如string型別的預設值是null,

int型別的預設值是0

(3)區域性變數只能在當前的方法中使用,在其他方法中不能使用。成員變數可以在整個類中使用。

(4)在乙個方法中區域性變數和成員變數重名了,方法中優先使用區域性變數,

如果想在此方法中使用全域性變數,需要使用this關鍵字。

this關鍵字,的作用是:

this關鍵字的作用:

(1)this關鍵字能夠呼叫屬性。(可以在構造方法中呼叫 也可以在例項方法中呼叫)

(2)this關鍵字呼叫本類中的方法。 注意:別呼叫成死迴圈了

(3)this關鍵字呼叫構造方法。如果在構造方法中使用this關鍵字呼叫其他的構造方法,this關鍵字應該放在構造方法的第一行。注意:別呼叫成死迴圈了

什麼是方法的過載?

過載:(1)在同乙個類中

(2)方法名相同

(3)引數不同(引數個數不同或者引數型別不同)

(4)對返回值沒有要求

在乙個類中,方法名一樣,引數不相同,沒有返回值。這樣就構成了方法的過載。

C 筆記 物件導向基礎 (二)方法與方法過載

物件的動態特徵就是方法,表示這個物件能做什麼 型別 例項方法 靜態方法 構造方法 抽象方法 虛方法 方法定義要求 注意 注意 方法的呼叫時,引數的順序一般情況下是要 與方法定義的時候順序一致 但是也可以不一致 要求在呼叫方法的時候顯式地寫出引數名 return的作用 無條件跳出,立即跳出當前執行的方...

2020 7 20方法與方法過載

方法與方法過載 1.方法的結構 訪問修飾符 返回值型別 方法名 引數列表 2.引數 基本型別做引數時,傳遞的是值,不能出方法的範圍 引用資料型別做引數時,傳遞的是位址,可以影響方法外部 特殊 string 做引數時,等同於基本資料型別 一旦有了有參構造,預設無參構造失效,無參構造必須寫出來 虛擬機器...

類與介面(四)方法過載解析

一 方法過載簡介 方法過載 當兩個 或多個 方法的名稱相同,而引數的對應型別或個數不同時,我們就說方法過載了。當然,編譯器也能識別出來。編譯器是如何識別呼叫了哪個方法?在往下講前,我們先來了解一下 編譯器是怎麼才能識別出程式呼叫了那個方法。其實,這個問題就是在問 在呼叫方法處,編譯器能得到呼叫方法的...