類
類是自定義數(shù)據(jù)類型的藍圖,對現(xiàn)實生活中一類具有共同特征的事物的抽象。它是面向?qū)ο笾械母拍?,是面向?qū)ο缶幊痰幕A(chǔ)。
類是一種數(shù)據(jù)結(jié)構(gòu),包含了數(shù)據(jù)成員(字段、常量)和函數(shù)成員(方法、屬性、索引器、事件、運算符、構(gòu)造函數(shù)、析構(gòu)函數(shù)和靜態(tài)構(gòu)造函數(shù))。類的類型是支持繼承。
1、類的聲明
class是聲明類的關(guān)鍵字,其格式為[訪問修飾符] class 類名稱 [: 父類名] { [訪問修飾符] 數(shù)據(jù)成員或函數(shù)成員 }。關(guān)于訪問修飾符可以閱讀前面文章訪問修飾符。下面通過一段代碼了解其定義:
public class PrintImage
{
#region 數(shù)據(jù)成員
/// <summary>
/// 打印機名稱
/// </summary>
private string _Printername= string.Empty;;
/// <summary>
/// 圖片
/// </summary>
public Image ImageDocument { get; set; }
#endregion
#region 函數(shù)成員
/// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
public PrintImage()
{
// 方法體內(nèi)容
}
/// <summary>
/// 析構(gòu)函數(shù)
/// </summary>
~ PrintImage()
{
// 方法體內(nèi)容
}
/// <summary
/// 打印方法
/// </summary>
public Print(string printername,Image image)
{
// 方法體內(nèi)容
}
/// <summary
/// 預(yù)覽方法
/// </summary>
public Preview(Image image)
{
// 方法體內(nèi)容
}
/// <summary>
/// 泛型方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="parameter"></param>
public static void Show<T>(T parameter)
{
// 方法體內(nèi)容
}
#endregion
}
2、構(gòu)造函數(shù)
構(gòu)造函數(shù)是一個與類共享相同名稱的方法,每個類只有一個。通常設(shè)置在類中定義的變量的初始值。構(gòu)造函數(shù)類型有默認(rèn)構(gòu)造函數(shù)、參數(shù)化構(gòu)造函數(shù)、復(fù)制構(gòu)造函數(shù)、靜態(tài)構(gòu)造函數(shù)和私有構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)沒有任何參數(shù)。using System;
namespace Fountain.Net.Base.Sample
{
public class Cars
{
/// <summary>
/// 品牌
/// </summary>
private string brand =string.Empty;
/// <summary>
///
/// </summary>
public string Brand
{
get { return brand; }
set { brand = value; }
}
/// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
public Cars()
{
Console.WriteLine("已聲明創(chuàng)建對象");
}
/// <summary>
/// 析構(gòu)函數(shù)
/// </summary>
~ Cars()
{
Console.WriteLine("對象已被刪除");
}
}
}
//== 引用
using System;
namespace Fountain.Net.Base.Sample
{
class Program
{
static void Main(string[] args)
{
Cars cars=new Cars();
// 設(shè)置
cars.Brand="dotNet開發(fā)技術(shù)分享";
// 獲取后輸出
Console.WriteLine(string.Format("汽車品牌:{0}",cars.Brand));
//
Console.ReadLine();
}
}
}
//== 結(jié)果
已聲明創(chuàng)建對象
汽車品牌:dotNet開發(fā)技術(shù)分享
對象已被刪除
3、析構(gòu)函數(shù)
析構(gòu)函數(shù)是一種特殊的成員函數(shù),用于在對象被銷毀時執(zhí)行必要的釋放資源。
析構(gòu)函數(shù)特性:一個類只能有一個、無法繼承或重載、無法調(diào)用、既沒有修飾符,也沒有參數(shù)。
//== 引用
using System;
namespace Fountain.Net.Base.Sample
{
class Program
{
static void Main(string[] args)
{
Cars cars=new Cars();
// 設(shè)置
cars.Brand="dotNet開發(fā)技術(shù)分享";
// 獲取后輸出
Console.WriteLine(string.Format("汽車品牌:{0}",cars.Brand));
}
}
}
//== 結(jié)果
已聲明創(chuàng)建對象
汽車品牌:dotNet開發(fā)技術(shù)分享
對象已被刪除
4、抽象類
以abstract 關(guān)鍵字修飾符用于定義抽象類,不完整,并且它僅用作基類。抽象類有幾個特性,包括不能直接實例化、不能被密封、允許但非必須包含抽象成員。using System;
namespace Fountain.Net.Base.Sample
{
/// <summary>
/// 定義動物抽象類
/// </summary>
public abstract class Animal
{
public abstract void Run();
}
/// <summary>
/// 定義由動物類派生貓
/// </summary>
public class Cat : Animal
{
public override void Eat()
{
// 輸出
Console.WriteLine("小貓吃魚");
}
}
}
//== 引用
using System;
namespace Fountain.Net.Base.Sample
{
class Program
{
static void Main(string[] args)
{
Cat cat=new Cat();
// 調(diào)用方法
cat.Eat();
Console.ReadLine();
}
}
}
5、密封類
以sealed關(guān)健字修飾符定義的類,密封類特性有不能被繼承。如果是密封成員,則派生類中不能對其重寫該成員。密封成員屬性可提高反射在檢索屬性時的性能。
using System;
using System.Collections.Generic;
namespace Fountain.Net.Base.Sample
{
/// <summary>
/// 密封類
/// </summary>
public sealed class Users
{
/// <summary>
/// 用戶ID
/// </summary>
public string UserId { get; set; }
/// <summary>
/// 用戶名稱
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 密封并重寫基類中的ShowInfo方法///
/// </summary>
public bool Login()
{
try
{
return true;
}
catch(Exception exception)
{
throw new Exception(exception.Message);
}
}
/// <summary>
/// 獲取用戶列表
/// </summary>
/// <returns></returns>
public Dictionary<string,string> Getuser()
{
try
{
Dictionary<string, string> userList = new Dictionary<string, string>();
userList.Add("ID20240001", "A用戶");
userList.Add("ID20240002", "B用戶");
userList.Add("ID20240003", "C用戶");
userList.Add("ID20240004", "D用戶");
return userList;
}
catch (Exception exception)
{
throw new Exception(exception.Message);
}
}
}
}
using System;
namespace Fountain.Net.Base.Sample
{
class Program
{
static void Main(string[] args)
{
Users users = new Users();
users.UserId="ID20240001";
users.UserName="A用戶";
Console.WriteLine(string.Format("用戶:{0}-{1} 登錄狀態(tài):{2}",users.UserId,users.UserName,users.Login()));
Dictionary<string, string> userList = users.Getuser();
foreach (string item in userList.Keys)
{
Console.WriteLine(string.Format("在線用戶:{0}-{1}", item, userList[item]));
}
Console.ReadLine();
}
}
}
// 輸出結(jié)果
用戶:ID20240001-A用戶 登錄狀態(tài):True
在線用戶:ID20240001-A用戶
在線用戶:ID20240002-B用戶
在線用戶:ID20240003-C用戶
在線用戶:ID20240004-D用戶
6、靜態(tài)類
以static關(guān)健字修飾符定義的類,靜態(tài)類主要特性有不能實例化、僅包含靜態(tài)成員、密封的、不能包含實例構(gòu)造函數(shù)。
using System;
using System.IO;
namespace Fountain.Net.Base.Sample
{
/// <summary>
/// 靜態(tài)類
/// </summary>
public static class Logs
{
// 靜態(tài)字段 當(dāng)前程序的執(zhí)行路徑
private static string path=System.AppDomain.CurrentDomain.BaseDirectory;
/// <summary>
/// 寫日志內(nèi)容的靜態(tài)方法
/// </summary>
/// <param name="content">內(nèi)容</param>
public static void Writting(string content)
{
try
{
// 根據(jù)日期定義文件名稱
string filename = string.Format("{0}.log",DateTime.Now.ToString("yyyyMMddHH"));
// 將內(nèi)寫轉(zhuǎn)成字節(jié)
byte[] contentArray = System.Text.Encoding.UTF8.GetBytes(content);
// 創(chuàng)建文件流
using (FileStream fileStream = new FileStream(path + Path.DirectorySeparatorChar + filename, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
fileStream.Seek(0, System.IO.SeekOrigin.End);
// 寫入流
fileStream.Write(contentArray, 0, contentArray.Length);
}
}
catch(Exception exception)
{
throw new Exception(exception.Message);
}
}
}
}
// 應(yīng)用
// 靜態(tài)類 不用創(chuàng)建實列直接調(diào)用
Logs.Writting("測試靜態(tài)類的調(diào)用");
小結(jié)
以上是C#中面向?qū)ο蠡A(chǔ)的類的全部內(nèi)容,希望對大家理解類一定的參考借鑒價值, 敬請關(guān)注后續(xù)內(nèi)容。
該文章在 2024/3/26 18:53:27 編輯過