1.什麼是面向對象?c#
一種分析問題的方式。
2.面向對象三大特徵: 函數
封裝(隱蔽代碼實現/複用/修改方便)、繼承、多態。
3.什麼是類?什麼是對象?類和對象的區別?如何寫一個汽車類?學習
類是模具,建立對象的模具,抽象的。
類是一種數據類型,用戶自定義的數據類型 this
類組成:字段、屬性、方法、構造函數等
對象是具體的,是類的具體實例。spa
對象具備屬性(特徵)和方法(行爲)
案例:建立學生類,老師類,經過構造函數初始化類內部字段
4.this 當前對象
5.類與對象的關係:類是用來描述事物的 對象
對象是這類事物存在的個體 blog
描述對象就是描述對象的特徵(字段)與行爲(方法)
例如:
楊老師和劉波學員都有姓名、性別、年齡等
楊老師有講課的行爲,學生有學習的行爲繼承
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.當變量是一個方法的局部變量時,那麼該變量是在方法被調用時, 存在於棧內存;方法執行完畢後就當即銷燬。