安靜且高效一點就好3

2021-10-25 08:01:56 字數 4947 閱讀 6822

二、多型

總結靜態與非靜態的各個要點,還有就是對繼承中的知識進行補足,黎克特制轉換原則的了解,is as運算子的基本常規使用,實現多型的三種方式,虛方法,抽象類,介面

1.靜態的定義:無論什麼成員被static修飾,那麼這個成員變為靜態成員,列如類被修飾則為靜態類,方法被修飾則為靜態方法,欄位則變為靜態字段等等…下面將詳細對靜態與非靜態進行分析:

1.如果當前成員是靜態成員,那麼需要加上static關鍵字進行修飾。

2.兩者之間的呼叫的區別:

—>靜態成員在呼叫的時候需要使用類名來呼叫。---->屬於類

—>但是非靜態成員在呼叫的時候要求使用物件名來呼叫。---->物件

3.靜態類:靜態類中只允許出現靜態成員,語法要求

4.非靜態類:

—>在非靜態類中允許出現靜態成員,也允許出現非靜態成員。

—>在非靜態函式中即允許訪問非靜態成員,也允許訪問靜態成員(如果你要訪問其他類的靜態成員, 前提是你要訪問的成員必須被public出來)

5.什麼時候用非靜態?

----->靜態成員只有在整個程式結束的時候才能夠被釋放資源。所以說,我們的程式中靜態成員應該是越少越好。

6.靜態建構函式不能加訪問修飾符,靜態建構函式會比例項建構函式先執行

**如下(示例):

namespace 靜態static

} class student

----

->靜態建構函式不能加訪問修飾符,靜態建構函式會比例項建構函式先執行

static

student()

private string name;

public string name

set

} private int age;

public int age

set

} private string schoolname;

public string schoolname

set

} public void

studentsayhello()

,年齡,學校名稱"

,this.name,this.age,this.schoolname);}

}----->靜態類中只能包含靜態成員,不能包含例項成員

class persion

set

} private static string name;

public static string name

set

} public static

void

persionsayhello()

",name);}

}}

【@】黎克特制替換原則:

1.子類可以賦值給父類

2.如果父類中裝的是子類物件,那麼可以將這個父類轉換為"對應"的子類物件

【@】我們可以使用is.as運算子幫助我們進行轉換:

1.is、as都表示型別轉換,不同的是,他們的返回值不一樣。

2.is:是否可以執行型別轉換 ,返回值是bool型別。

3.as:表示型別轉換,如果成功,則返回對應的物件,如果失敗則返回null。

注:對知識點進行補充—>//null 「」 string s=null string s="「這兩個乙個」 "是在記憶體中開闢了控制項,null乙個是沒有開闢記憶體空間

**如下(示例):

namespace 黎克特制轉換原則

else

if(p is teacher)

}else

#endregion

#region as轉換

teacher teach= p as teacher;

if(teach != null)

else

#endregion

console.

readkey()

;}static persion getsingle

(int number)

return per;}}

class persion

class student:persion

} class teacher : persion

}}

雖然多型是乙個很抽象的問題,但是我對多型的理解如下:

1.多型意在讓乙個物件能夠表現出多種的型別、狀態。

2.多型:就是用父類型別變數,後面跟著子類的例項,然後可以呼叫子類的函式(這個就叫表現出多種型別,狀態)。

3.實現多型的有三種方法:虛方法,抽象類,介面。

虛方法的實現:

–>在父類的函式前面加個virtual關鍵字

—>在子類每個函式前面加上override關鍵字

**如下(示例):

namespace 多型

;for

(int i =

0; i < pers.length; i++

)//else if (pers[i] is japanese)

////else if (pers[i] is korea)

////else if (pers[i] is american)

//#endregion

} console.

readkey()

;}} class persion

set

} public persion

(string name)

----

->標記這個函式是虛函式,可以被子類重寫。

public virtual void

sayhello()

} class chinese:persion

public override void

sayhello()

,我是中國人"

,this.name);}

} class japanese : persion

----

->override表示重寫父類的虛函式

public override void

sayhello()

,我是日本人"

,this.name);}

} class korea:persion

public override void

sayhello()

,我是南韓人"

,this.name);}

} class american : persion

public override void

sayhello()

,我是美國人"

,this.name);}

}}

1.抽象類需要abstract關鍵字來修飾

2.裡面可以包含抽象成員,也可以包含普通成員,**中有詳細的概括

**如下(示例):

namespace 抽象類

} abstract class animal

set

} private int age;

public int age

set

} private char gender;

public char gender

set

} public void

sayhello()

#endregion

} class cat : animal

} class dog : animal

}}

1.介面概念:介面側重於表示 1、能力 2、規範

2.介面的名字一般都以"i"開頭,側重於表示一種能力

3.介面可以多繼承

4.介面中的成員不寫訪問修飾符,預設是public,而類中的成員不寫訪問修飾符,預設是private

5.介面的名字一般都以"i"開頭,側重於表示一種能力

6.介面實現多型和抽象類實現多型是一樣的,都是宣告父類去指向子類物件…

**如下(示例):

namespace 介面}--

->為了滿足student的多繼承,我們使用介面

--->介面的名字一般都以"i"開頭,側重於表示一種能力

--->介面可以多繼承

inte***ce ikoulan

inte***ce ifly

class persion

--->不能再父類中封裝扣籃的函式,因為並不是所有的子類都會扣籃

//public void koulan()//}

class student : persion, ikoulan, ifly

public void

koulan()

} class teacher : persion, ikoulan

} class nolegs : persion

class nbaplay : ikoulan

}}

1.介面中的成員不能加「訪問修飾符」,介面中的成員訪問修飾符為public,不能修改。

2.類中的成員預設的訪問修飾符是private ,而介面中預設的訪問修飾符是public

3.介面中的成員不能有任何實現(「光說不做」,只是定義了一組未實現的成員)。

4.介面中只能有方法、屬性、索引器、事件,不能有「字段」和建構函式。

5.介面與介面之間可以繼承

6.介面並不能去繼承乙個類,而類可以繼承介面 (介面只能繼承於介面,而類既可以繼承介面,也可以繼承類)

7.實現介面的子類必須實現該介面的全部成員。

8.乙個類可以同時繼承乙個類並實現多個介面,如果乙個子類同時繼承了父類a,並實現了介面ia,那麼語法上a必須寫在ia的前面。

注:當乙個抽象類實現介面的時候,需要子類去實現介面。

多寫寫多看看得到的總會多一點。

終於安靜一點了

總是在對自己有很多不滿的同時,無限的放縱自己 昨天發燒了,幸福的光明正大的逃了課,今天身體好多了,還是放縱自己到10點才醒。中午吃完飯寢室裡只有自己乙個人,開啟電腦,我竟然看起了qt文件,有自己亂用了用qt designer,查了查資料,想弄弄qmake但是不會配置環境,就又查了查 然後有點困,就亂...

高效學習的一點感悟

高效利用學習時間 在學習的每一秒都要全心投入,要麼認真做要麼就不做,比如上課要麼專心聽講,要麼覺得沒意思直接別去,不要一邊聽課還想著一邊寫個作業啥的一心二用 但某些情況除外,比如開會就要邊聽邊記筆記邊動腦 費曼技巧 不得不說真的是很好用的學習方法,步驟如下 已經理解的可以跳過 第一步 選擇要學習的概...

java一點東西(3)

運算子的優先順序 優先順序最高 單目運算子 賦值符號 物件導向設計步驟 1.發現類 2.發現類的屬性 3.發現類的方法 優化設計 編寫程式入口 迭代器 如何遍歷list集合?方法1.用for迴圈和get 方法結合實現遍歷 for each迴圈可以遍歷輸出,但不可刪減 方法2.用迭代器iterator...