前言:物件導向程式設計是現如今程式設計的大環境,所以再次回顧物件導向的知識是非常有必要的。
一:類與物件
1:軟體系統
輸入{使用者介面} 運算{業務邏輯}
儲存{資料庫} 輸出{介面或其他檔案}
2:物件的了解
物件是身邊的一些常見的事物,主要了解物件之間區別;
物件區分的重要因素:
靜態特徵(屬性,表示物件「什麼樣子」)
動態特徵(方法,表示物件「能幹什麼」)
3:面向過程和物件導向
面向過程:就是比較注重做每一件事情的過程,步奏,流程。關注點為小的細節
物件導向:是具有一些特性和動作的東西,
關注點為最後的結果。
4:理解物件導向程式設計
*它的核心是物件
*物件為現實世界的實體,而物件導向程式設計就是將這些實體模擬到電腦程式中,實現相關的功能。
*根據需要編寫各種物件,並將其物件建立一定的關係;
5:封裝的概念
*就是將一些小的物件放在一起,然後以乙個新的物件呈現出來,封裝使得乙個物件的內部變得隱藏,從而更加安全;
*將屬性和方法放在乙個類裡面,類就可以看做是乙個黑箱,只能在外面看到一些公共的方法和屬性。《模組化和資料隱藏》
*定義用操作方法把資料封閉到類中,形成以資料為核心,方法為外殼的類。
6:類的概念
*物件是類中的乙個例項,將物件的共同特徵抽取出來,這些共同的屬性和方法被組織在乙個單元中,就被就做類;
*類是具有相同屬性和共同方法(行為)的一組物件的集合
*類的屬性:物件或實體所擁有的靜態特徵,在類中表示稱為類的屬性;
*類的方法:物件或實體所擁有的動態特徵,在類中表示為類的方法;
7:類與物件的區別 <
自行車和設計自行車圖紙的關係》
*類是乙個概念模型,在這個模型中,規定物件的屬性和方法;
*物件是乙個實體;
8:類模版的定義
訪問修飾符 class 類名
{定義字段;
定義屬性部分;
定義方法部分;
} *定義類名:名詞,首字母大寫passal命名法;
*編寫類的字段,屬性;*編寫類的方法,介面;【獨立完成某個功能的單元模版】(學會理解類的組成,並且在這其中要學會應用)
9:字段:叫做成員變數(全域性變數);
{欄位和屬性都是用來描述類的靜態特徵}方法中定義的變數叫做區域性變數;二者的作用域不同;
10:物件的建立過程
static void main(string ardes)11:關於物件的呼叫set}public string studentname
set}
//獲取資訊
public string getstudent()
,學號:」,studentname,studentid);
return info;
}}
//建立物件二:欄位與屬性student objstudent=new student();
//給物件屬性賦值
objstudent.studentid=1001;
objstudent.studentname=」阿輝」;
//顯示物件的屬性(呼叫方法)
string info=objstudent.getstudent(); //類名.方法名
console.writeline(info);
console.readline();
1:訪問修飾符
作用:限制物件的屬性或方法可訪問的範圍(作用於類的內部和外部)
型別:private(私有的:外部不可見,不可訪問,只在本類可以訪問,預設的)
public(公有的:外部可見,外界可以訪問)
protect(受保護的:只在本類和子類中被訪問)
intemal(只在本專案中被訪問)
2:在方法中如果去掉public,則系統自動變為private,
對於private修飾符外界不可訪問,如果訪問會報錯,而且通過(.運算)不可自動出現;
3:字段(類的成員變數)
字段一般用private來修飾(是我們的私有財產),通常只供類的內部的不同方法使用;
4:屬性(描述靜態特徵){是什麼,具有什麼特有的屬性}
字段私有化,屬性是公有化;其中有get();set();通過value將外部值賦私有字段;
屬性是外界訪問私有欄位的入口,屬性本身不儲存任何資料;屬性中的get,set;
get為讀取時返回欄位的值,set外部來賦值;
5:使用屬性避免非法資料
6:可以將屬性設定為唯讀;
7:沒有對應私有欄位的屬性,屬性內部可以新增如何需要的業務**,如方法的呼叫;
8:欄位與屬性比較
字段(成員變數)為類的內部做資料互動,字段一般是private(私有的)的;可以為其賦值,也可以獲取欄位的值,
當需要為外部提供資料時,請將字段封裝為屬性,不要去使用共有的字段;
屬性一般向外界提供資料,主要描述資料物件的靜態特徵,一般用public,可設定為唯讀,只寫屬性,提高資料的安全性。也可以在內部新增業務邏輯,避免非法資料;
三:類的方法和構造方法
1:方法表示乙個類或物件能夠實現的操作,即物件的動態特徵。乙個類中主要是通過方法把字段和屬性的值傳遞出去;
分類:例項方法,靜態方法,構造方法,抽象方法,虛方法;
2:方法的作用
*規定了類主要實現的功能;
*方法封裝在類裡面,外界呼叫時不需要了解內部細節,體現了其「高內聚」「低耦合」特性;
3:書寫類中方法的錯誤集合
*忘記返回值,提示並非所有路徑**都有返回值;
*返回值定義的型別與返回值資料的型別不同;
*變數在使用中超出作用域
4:構造方法的呼叫優先與其他的方法,其中引數的傳遞和一般的方法傳遞一樣;
這裡的呼叫是因為我們每一次使用物件的時候都會new一下,這裡就呼叫了類中預設的構造方法,這裡可以進行過載的實現,當你想為其進行初始化時。
5:構造方法可以進行初始化,使用有引數的構造方法可以避免使用者單個初始化物件屬性的麻煩;在構造方法中統一初始化就可以使程式變得更加美觀;
6:構造多個構造方法
構造方法自身呼叫時用完成自身方法的呼叫;
7:構造方法與例項方法的區別
構造方法:
*用於物件的初始化,乙個類中至少有乙個構造方法;
*不能顯示呼叫,只能在建立物件時使用new來呼叫;
*無返回值;無括號包裹;
*構造方法名稱必須與類名一樣;
例項方法:
*用於表示物件能夠幹什麼,乙個類中可以沒有任何例項方法;物件的動態特徵;
*只能顯示呼叫:物件名.方法名。
*可以有返回值,沒有時必須以void表示;
*方法的命名要有意義,不能與類名相同;
8:物件初始化器
中間的語句塊,必須以「,」分隔;
*只能初始化屬性值;
*只能在呼叫者中使用,而構造方法初始化必須寫在類中;
9:方法的重新定義(三種)
10:this關鍵字
*this表示當前類的物件,用於訪問該類成員變數或方法;
*當成員變數和區域性變數重名時使用this區分;
這裡還有個base關鍵字,當我們的類繼承字別的類時,我們通過base來直接使用父類。
Python 物件導向基礎01
當有乙個問題擺在我面前,傳統思路是我親自上陣,把問題解決。下一次當類似的問題再次出現時,我再上,再解決。如此重複,不知道什麼時候是個頭。寫程式也是這樣,面對類似的問題時,如果每次都是從零開始,工作學習的效率將會十分低下,因為總是在重複相同的工作。物件導向則把我從執行者的角色公升級為了指揮者。我不用再...
物件導向01 基礎篇
物件導向基礎 一 物件導向的概念 1.物件導向的概念 面向過程的思想是拿到一件事,首先考慮的是該怎麼去做 而物件導向的思想是拿到一件事考慮的是該讓誰去做 物件導向是將面向過程中的執行者變成指揮者,使用物件導向的開發降低 的耦合度 一般將具有 封裝,繼承,多型 等特徵的程式語言稱為具有物件導向思想的程...
python基礎四 01 物件導向
物件導向程式設計與面向過程程式設計是兩種常見的程式設計思想。先通過引子來看下 話說三國時期,曹操帶領百萬大軍攻打東吳,大軍在長江赤壁駐紮,軍船連成一片。眼看就要滅了東吳,統一天下,曹操大悅,於是大宴眾文武。在酒席間,曹操詩性大發,不覺吟道 喝酒唱歌,人生真爽.眾文武齊呼 丞相好詩!於是命印刷工匠刻版...