物件導向與類

2021-09-23 15:33:42 字數 4207 閱讀 8918

1.1、類的概念:類是乙個模板,確定了乙個物件應該有的屬性與方法,簡單理解就是屬性相當於乙個人的特徵,而方法相當於乙個人的行為,在資源管理器中新增新類

1.2、在新建好乙個類後在類之前新增乙個public

1.3、類的語法

[訪問修飾符] class 類名

訪問修飾符:public

類名:書寫規則是要求每個單詞的首字母都要大寫

1.4、類的例項化(建立物件):我們寫好乙個類之後,需要建立這個類的物件

使用關鍵字new來建立,必須寫在main函式中

類名 物件名=new 類名();

1.5、字段:在類中儲存資料 寫法:修飾符 _欄位名

給新建物件賦值:新建物件名. _欄位名()

1.6、類中的成員如果不加訪問修飾符,預設是private

private:私有的,表明只能在類的內部訪問,出了這個類之後,

就訪問不到了,若想在類外訪問就要加public

在類中寫的方法,若有static則為靜態方法,沒有則非靜態

1.7、在類中寫方法若想輸出物件的值:this._欄位名(this表示當前這個類的物件,this的作用是用來輸出欄位的值)

1.8、類是不佔記憶體的,而物件是佔記憶體的

下面是例題**

person**塊

namespace 第九天練習**

}}

program**塊

class program

}

2.1、在乙個類中應該給每個欄位都去配備乙個屬性,屬性就是為了保護字段,對字段的取值和設定進行乙個設定,那麼相應的在宣告欄位時就不能新增public,是為了保證資料是乙個隱私狀態,而在第一節中新增了public是因為當時沒有引入類的屬性,那麼相應了在類的方法中賦值要改為this.屬性名,屬性的本質是由於兩個方法組成的

屬性的語法:

public string 命名

當取值時用get方法

set 當給屬性賦值時用set方法

}2.2、字段就是女人,屬性就是男人。說明屬性是為了保護字段

person **塊

public class person

set

}int _age;

public int age

get

}char _gender;

public char gender

get

} public void

sayhello()

}

program**塊

person aperson=new person()

; aperson.age =18;

aperson.gender =

'男';

aperson.name =

"張三"

; aperson.

sayhello()

; console.

readkey()

;

2.3、屬性分為三種

既有get方法也有set方法的屬性我們稱之為可讀可寫屬性

只有get方法沒有set方法我們稱之為唯讀屬性

只有set方法沒有get方法我們稱之為只寫屬性

2.4、當輸入的值出現異常時,可以在get,set方法中新增判斷語句,通常只在其中之一新增判斷語句

2.5、類的練習題:student

定義乙個學生類,有六個屬性,分別為姓名、性別、年齡、語文、數學、英語成績。

有2個方法:

乙個打招呼的方法:介紹自己叫xx,今年幾歲了。是男同學還是女同學。

兩個計算自己總分數和平均分的方法。

實化兩個物件並測試:

張三 男 18 三科成績為:90 95 80

小蘭 女 16 三科成績為:95 85 100

3.1、主要作用就是對,物件進行初始化(在類中來建立)

3.2、建構函式其實就是乙個函式,只不過是乙個特殊的函式。

語法:public 建構函式名(傳入引數:資料型別 欄位名)

沒有返回值,連void都不能寫,建構函式的名稱必須和類名一致

3.3、呼叫建構函式

new的作用:

1)、在記憶體的堆中開闢空間

2)、在開闢的堆空間中建立物件

3)、呼叫物件的建構函式

3.4、在建立建構函式之後,就可以在建立類的物件中填入所需要的資料

類名 物件名=new 類名(欄位的資料);

而這樣做就可以避免重複呼叫屬性來輸入資料

3.5、1)、可以過載(方法的名稱相同但方法的引數不同,引數個數相同但型別不同或引數型別相同但個數不同 )

2)、類中缺省會有乙個無引數的建構函式,當你寫了乙個新的建構函式後,那個預設的無引數的

建構函式就被乾掉了

4.1、值型別:int double char bool decimal struct enum

引用型別:string 陣列 自定義類

4.2、常用的記憶體:堆 棧 靜態儲存區域

值型別是存在棧中,引用型別是存在棧中

5.1、靜態成員需要被static修飾,非靜態成員不需要加static。

5.2、問題1:在乙個非靜態類中,是否允許出現靜態成員?

答:非靜態類中是可以出現靜態成員的。

問題2:在非靜態函式中,能不能夠訪問到靜態成員?

答:在非靜態函式中,既可以訪問到非靜態成員,也可以訪問到靜態成員。

問題3:在靜態函式中,能不能夠訪問到非靜態成員?

答:靜態方法只能夠訪問到靜態成員。

問題4:在靜態類中能否出現非靜態成員?

答:不可以,在靜態類中,只允許出現靜態成員。

5.3、在呼叫上,靜態和非靜態的區別

1、在呼叫例項成員的時候,需要使用物件去呼叫

2、在呼叫靜態成員的時候,必須使用類名.靜態成員名;

3、靜態類是不允許建立物件的

6.1、gc gargbage collection

當我們程式結束之後,gc會掃瞄整個記憶體,發現,如果有的空間沒有被指向,

則馬上自動把這塊空間銷毀。

問題:寫乙個ticket類,有乙個距離屬性(本屬性唯讀,在構造方法中賦值),不能為負數,有乙個**屬性,**屬性唯讀,並且根據距離distance計算**price (1元/公里):

0-100公里 票價不打折

101-200公里 總額打9.5折

201-300公里 總額打9折

300公里以上 總額打8折

有乙個方法,可以顯示這張票的資訊.

測試上面的類

ticked類**塊

class ticked

}//建構函式

public ticked

(double distance)

this._distance = distance;

}double _price;

public double price

else

if(_distance>=

101&&_distance<=

200)

else

if(_distance >=

201&& _distance <=

300)

else}}

public void

showticket()

公里需要元"

, this.distance, this.price);}

}

program**塊

class program

}

8.1、在乙個專案中引用另乙個專案的類的步驟

1、新增要引用的類所在的專案。

2、引用命名空間(在最上端using處新增using namspace後面的**;)

8.2、訪問修飾符

public :公開的,公共的

private:私有的,只能在類的內部訪問,出了這個類之後,就訪問不到了。

能夠修飾類的訪問修飾符只有兩個:

1)、public

2)、internal:表示只能在當前程式集的內部進行訪問,出了這個程式集就訪問不到啦。

對於咱們而言,現階段就將程式集理解為當前專案。

物件導向 類與物件

物件導向是相對於面向過程而言的,具體的來說,比如 我們想要吃一頓午飯,我們親自買菜,洗菜.切菜,炒菜,煮飯,這樣做成一桌菜就叫面向過程,也就是說整個過程 你都親自完成,而 物件導向呢?點外賣 點一桌子菜和公尺飯 不管他咋做出來的 面向過程程式設計 就是 我們想要實現乙個功能 直接去呼叫別人寫好的功能...

物件導向(類與物件)

世界上肯定是先出現各種各樣的實際存在的物體,然後隨著人類文明的發展,人類站在不同的角度總結出了不同的種類,比如 人類 動物類 植物類等概念。也就說,物件是具體的存在,而類僅僅只是乙個概念,並不真實存在,比如你無法告訴我人類 具體指的是哪乙個人這與函式的使用是類似的 先定義函式,後呼叫函式,類也是一樣...

物件導向 類與物件

1.物件導向的三大特徵 1 封裝性 2 繼承性 3 多型性 物件導向最大的特徵 可以對現實生活進行抽象 2.基本概念 1 類 指共性的概念 2 物件 指的是乙個具體的,可以使用的事物。通俗來說,類就是產生物件的藍圖。物件的所有行為,一定要在類中進行完整的定義。類中的組成 屬性 方法 class 類名...