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.當變量是一個方法的局部變量時,那麼該變量是在方法被調用時, 存在於棧內存;方法執行完畢後就立即銷毀。