數往知來C 物件導向準備 二

2022-01-17 03:04:49 字數 2568 閱讀 6763

1.什麼是物件導向?

一種分析問題的方式。

2.物件導向三大特徵: 

封裝(隱蔽**實現/復用/修改方便)、繼承、多型。

3.什麼是類?什麼是物件?類和物件的區別?如何寫乙個汽車類?

類是模具,建立物件的模具,抽象的。

類是一種資料型別,使用者自定義的資料型別      

類組成:字段、屬性、方法、建構函式等

物件是具體的,是類的具體例項。

物件具有屬性(特徵)和方法(行為)

案例:建立學生類,老師類,通過建構函式初始化類內部字段

4.this  當前物件

5.類與物件的關係:類是用來描述事物的    

物件是這類事物存在的個體   

描述物件就是描述物件的特徵(字段)與行為(方法)

例如:

楊老師和劉波學員都有姓名、性別、年齡等

楊老師有講課的行為,學生有學習的行為

6.類和物件的區別:

類是抽象的概念,僅僅是模板,比如說:「人」類       

物件是乙個你能夠看得到、摸得著的具體實體

"人"類都有:姓名\性別\年齡 屬性,有說話的方法.

張三是乙個物件,他的姓名屬性的值:張三  性別的屬性的值:男  年齡屬性的值:20   張三會說話

物件可以叫做類的例項(instance)

類只佔一塊記憶體,每個物件單獨的占用一塊記憶體。

7.類的定義:

定的定義語法:

[訪問修飾符] class 類名

類中可以包含變數的定義、方法。

8.類的例項化:

類的例項化,用關鍵字new

語法: 類   例項名 = new 類();

類的成員的訪問:

例項名.屬性    例項名.方法名();

字段、方法、屬性(後面講)都可以叫做類的成員member,它們都需要定義訪問級別。訪問級別的用處在於控制成員在哪些地方可以被訪問,這樣達到物件導向中「封裝」的目的。

訪問修飾符:public private (internal protected)

9.屬性

欄位用public修飾的問題.

屬性的定義.get;set;

屬性是為了保護與之相對應的字段的.保證對字段的讀取和賦值符合要求.

屬性可分為:讀寫、唯讀、只寫

允許外部訪問的變數一定要宣告為屬性

屬性的本質-就是兩個方法。

10.類的構造方法

構造方法初始化物件的字段屬性。

建構函式是用來建立物件的特殊方法,方法名和類名一樣,沒有返回值,連void都不用。

建構函式可以有引數,new 物件的時候傳遞函式引數即可

如果不指定建構函式,則類有乙個預設的無參建構函式。如果指定了建構函式,則不再有預設的無參建構函式,如果需要無參建構函式,則需要自己來寫。

建構函式可以過載,也就是有多個引數不同的建構函式。

認識類圖

11.c#中的類圖和通用類圖

12.封裝:

提問:大家覺得什麼是封裝?

遙控器剛出來時候很神奇,點個按鈕就能換電視台、切音量、關電視。而我們使用遙控器的人不需要知道他是怎麼實現的(你只需要付錢就可以)

和遙控器類似,物件導向的封裝就是把事物的狀態和行為封裝在類中,使用類的人不需要知道類內部是怎麼實現的,只要呼叫其中的屬性和方法實現功能就行。就像你使用遙控,不需要知道他是怎麼控制電視的,只要知道按鈕能換台就行

類和物件本身就是封裝的體現。

屬性封裝了字段、方法和字段封裝成了乙個物件、將一堆業務單一的**封裝到了乙個方法中、將乙個功能封裝到了幾個類中、將一些具有相同功能的**封裝到了乙個程式集中(dll、exe),並且對外提供統一的訪問介面。(屬性名、方法名等。)

13.this關鍵字

this:

1.作為當前類的物件,可以呼叫類中的成員。this.成員(呼叫成員,自己)

2.呼叫本類的其他建構函式。:this()(呼叫建構函式,自己)

14.命名空間-虛擬的資料夾系統

namespace(命名空間),用於解決類重名問題,可以看做「類的資料夾」。

如果**和被使用的類在乙個namespace則不需要using。

在不同命名空間下的類呼叫有兩種方法:

寫全稱  命名空間.類名

先using引用命名空間,再呼叫

注意:1.方法的引數列表裡 宣告的形參變數在呼叫的時候才開闢空間儲存在棧裡

2.當變數是乙個類的成員變數的時候,那麼該變數是跟隨類的物件存在於堆記憶體,但是物件引用斷開時,等垃圾**器。

3.當變數是乙個方法的區域性變數時,那麼該變數是在方法被呼叫時, 存在於棧記憶體;方法執行完畢後就立即銷毀。

C 物件導向(二)

c 的函式過載 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的個數 型別或者順序 必須不同。不能僅通過返回型別的不同來過載函式。include using namespace std class printdata void print double f vo...

c 物件導向程式設計(二)

一 裝箱與拆箱 裝箱轉換允許將 值型別 隱式轉換為 引用型別 存在下列裝箱轉換 從任何 值型別 包括任何 列舉型別 到型別object。從任何 值型別 包括任何 列舉型別 到型別system.valuetype。從任何 值型別 到 值型別 實現的任何 介面型別 從任何 列舉型別 到system.en...

C 物件導向基礎(二)

能夠準確理解下面這些問題是從c程式設計師向c 程式設計師高階的基礎。當然了,這只是一部分。物件導向三大特性?public protected private的區別?c 空類有哪些成員函式?建構函式 構造函式呼叫順序,析構函式呢?構造的時候先呼叫基類的建構函式,再呼叫派生類的建構函式 析構的時候先呼叫...