C 類(Class)
當你定義一個類時,你定義了一個數據類型的藍圖。這實際上並沒有定義任何的數據,但它定義了類的名稱意味著什麼,也就是說,類的對象由什麼組成及在這個對象上可執行什麼操作。對象是類的實例。構成類的方法和變數成為類的成員。
類的定義
類的定義是以關鍵字 class 開始,後跟類的名稱。類的主體,包含在一對花括弧內。下面是類定義的一般形式:
請注意: 訪問標識符 數據類型 指定了變數的類型,返回類型
如果要訪問類的成員,你要使用點(.)運算符。
點運算符鏈接了對象的名稱和成員的名稱。
下面的實例說明了目前為止所討論的概念:
using System;namespace BoxApplication{
當上面的代碼被編譯和執行時,它會產生下列結果:
Box1 的體積: 210Box2 的體積: 1560
成員函數和封裝
類的成員函數是一個在類定義中有它的定義或原型的函數,就像其他變數一樣。作為類的一個成員,它能在類的任何對象上操作,且能訪問該對象的類的所有成員。
成員變數是對象的屬性(從設計角度),且它們保持私有來實現封裝。這些變數只能使用公共成員函數來訪問。
讓我們使用上面的概念來設置和獲取一個類中不同的類成員的值:
using System;namespace BoxApplication{
當上面的代碼被編譯和執行時,它會產生下列結果:
Box1 的體積: 210Box2 的體積: 1560
C# 中的構造函數
類的 構造函數 是類的一個特殊的成員函數,當創建類的新對象時執行。
構造函數的名稱與類的名稱完全相同,它沒有任何返回類型。
下面的實例說明了構造函數的概念:
using System;namespace LineApplication{
當上面的代碼被編譯和執行時,它會產生下列結果:
對象已創建線條的長度: 6
默認的構造函數沒有任何參數。但是如果你需要一個帶有參數的構造函數可以有參數,這種構造函數叫做參數化構造函數。這種技術可以幫助你在創建對象的同時給對象賦初始值,具體請看下面實例:
using System;namespace LineApplication{
當上面的代碼被編譯和執行時,它會產生下列結果:
對象已創建,length = 10線條的長度: 10線條的長度: 6
C# 中的析構函數
類的 析構函數 是類的一個特殊的成員函數,當類的對象超出範圍時執行。
析構函數的名稱是在類的名稱前加上一個波浪形(~)作為前綴,它不返回值,也不帶任何參數。
析構函數用於在結束程序(比如關閉文件、釋放內存等)之前釋放資源。析構函數不能繼承或重載。
下面的實例說明了析構函數的概念:
using System;namespace LineApplication{
當上面的代碼被編譯和執行時,它會產生下列結果:
對象已創建線條的長度: 6對象已刪除
C# 類的靜態成員
我們可以使用 static 關鍵字把類成員定義為靜態的。當我們聲明一個類成員為靜態時,意味著無論有多少個類的對象被創建,只會有一個該靜態成員的副本。
關鍵字 static 意味著類中只有一個該成員的實例。靜態變數用於定義常量,因為它們的值可以通過直接調用類而不需要創建類的實例來獲取。靜態變數可在成員函數或類的定義外部進行初始化。你也可以在類的定義內部初始化靜態變數。
下面的實例演示了靜態變數的用法:
using System;namespace StaticVarApplication{
當上面的代碼被編譯和執行時,它會產生下列結果:
s1 的變數 num: 6s2 的變數 num: 6
你也可以把一個成員函數聲明為 static。這樣的函數只能訪問靜態變數。靜態函數在對象被創建之前就已經存在。下面的實例演示了靜態函數的用法:
using System;namespace StaticVarApplication{
當上面的代碼被編譯和執行時,它會產生下列結果:
變數 num: 3
※C 枚舉(Enum)
※C 字元串(String)
※C 循環
※C 方法
TAG:程序員小新人學習 |
※ES6 Class 類
※J.W.Anderson x Converse 全新聯名「New_Classics」系列
※G.I. Joe x Reebok Classic Canvas 全新「特種部隊」聯名
※奢侈品鑒定|CHANEL 香奈兒 Classic Flap(CF)深度測評報告
※球鞋丨J.W.Anderson x Converse 全新聯名「New_Classics」系列發布
※VR遊戲《Mega Drive and Genesis Classics》登陸PSVR
※HTC申請Cardboard類移動VR專利;微軟將裁員數百人 涉及3D和MR等領域;聯想發布 VR Classroom教育套件
※Nike SB Team Classic 全新「Mars Yard」配色上架
※Class.getResource和ClassLoader.getResource的區別分析
※發售通知 Metallica x Vans Sk8-Hi Reissue/Classic Slip-On
※Lightroom Classic CC v7.3更新詳解
※Puma Suede Classic BBOY Fabulous 50周年紀念版
※Classical CNN models:LeNet-5 模型結構詳解
※Adobe緊急推送Lightroom Classic CC更新 修復海量BUG
※Mercedes-Benz G-Class 獲 NCAP 撞擊測試最高 5 星評級
※圖標大亂斗!Vans Classics 「Logo Mix」 全新系列上架
※頗具中國傳統特色!VANS Classics「Satin Brocade」系列現已發售!
※Disney x VANS Classic二次合作!Authentic聯名鞋款首次曝光!
※Mars Yard 配色!全新 Nike SB Team Classic 現已上架
※Python3.7新特性:Data Class