淺談c# 面向?qū)ο笾?lèi)與對(duì)象
類(lèi)與對(duì)象
1、了解類(lèi):從這里開(kāi)始,學(xué)習(xí)C#面向?qū)ο缶幊痰幕緝?nèi)容,使用C#編程,所有的程序代碼都放在類(lèi)中,結(jié)構(gòu)體是一個(gè)用戶(hù)自定義的類(lèi)型,是由其他類(lèi)型組成的變量組,不存在獨(dú)立于類(lèi)之外的函數(shù);因此,在面向?qū)ο笾校?lèi)是面向?qū)ο缶幊痰幕締卧?。?lèi)與類(lèi)之間交互。
2、類(lèi)的定義:一個(gè)類(lèi)都可以包含2種成員:字段和方法。
1)類(lèi)的字段一般代表類(lèi)中被處理的數(shù)據(jù)(變量);
2)類(lèi)的方法大多數(shù)代表對(duì)這些數(shù)據(jù)的處理過(guò)程或用于實(shí)現(xiàn)某種特定的功能,方法中的代碼往往需要訪問(wèn)字段保存的數(shù)據(jù)。
簡(jiǎn)單的說(shuō),字段即變量,方法即函數(shù)。
例如:
[public | private] class 類(lèi)名 //類(lèi)名前的修飾符默認(rèn)是public
{
[public | private] 數(shù)據(jù)類(lèi)型 變量名;//定義變量
[public | private] 數(shù)據(jù)類(lèi)型 函數(shù)名(參數(shù)列表)//定義函數(shù)
{
函數(shù)體;
}
}
3、類(lèi)的字段(即變量)
字段代表了類(lèi)中的數(shù)據(jù),在類(lèi)的所有方法之外定義一個(gè)變量即定義了一個(gè)字段。,在變量之前加修飾符public,private,protected表示字段的訪問(wèn)權(quán)限。
例:
class ren
{
public decimal tizhong; //體重decimal類(lèi)型
private static decimal nianling;//年齡decima類(lèi)型,靜態(tài)的
public int shengao=175;//身高int類(lèi)型,身高賦值175cm;
}
4、類(lèi)的方法(即函數(shù))
1)函數(shù)的概念
在程序開(kāi)發(fā)過(guò)程中,為了解決代碼重復(fù)的問(wèn)題,絕大多數(shù)程序設(shè)計(jì)設(shè)計(jì)語(yǔ)言都將完成某一公用功能的多個(gè)語(yǔ)句組合在一起,起一個(gè)名字用于代表這些語(yǔ)句的全體,這樣的代碼塊被稱(chēng)為“函數(shù)”。
簡(jiǎn)單的理解就是,在一個(gè)program.cs文件中添加一個(gè)類(lèi),而這個(gè)class類(lèi)就是專(zhuān)門(mén)存放程序需要的函數(shù)方法的庫(kù)(平時(shí)的積累),每一個(gè)方法函數(shù)都由多個(gè)變量、語(yǔ)句等組成的一個(gè)代碼塊,而這個(gè)代碼塊有一個(gè)方法名,(在方法名前加修飾符public,private,protected等表示這個(gè)函數(shù)的訪問(wèn)權(quán)限)需要時(shí)直接在主函數(shù)的文件中調(diào)用這個(gè)方法名即可。
例如:
<1>有返回值的情況(多種數(shù)據(jù)類(lèi)型,如int,string,double等):
class 類(lèi)名{
public int 函數(shù)名(int x,int y)
{
int z=x+y;
return z;//上面函數(shù)的數(shù)據(jù)類(lèi)型就是return要返回的數(shù)據(jù)類(lèi)型,一定要對(duì)應(yīng)一致,才能在主函數(shù)中調(diào)用并輸出返回值;
}
}
<2>無(wú)返回值的情況(void)
class 類(lèi)名{
public void 函數(shù)名(int x,int y)//如果沒(méi)有返回值,即在定義函數(shù)名前加void;
{
int z=x+y;
Console.Write("z的值為:"+z);直接在函數(shù)中輸出
return;//或者直接return+分號(hào);即沒(méi)有返回值,不用在主函數(shù)中調(diào)用輸出
}
}
2)方法的定義與使用
定義:放在一個(gè)類(lèi)的函數(shù)(通常加一個(gè)存取權(quán)限修飾符)稱(chēng)為“方法”;
調(diào)用一個(gè)方法最基本的方式是通過(guò)類(lèi)創(chuàng)建的對(duì)象。new初始化對(duì)象的過(guò)程是創(chuàng)建一個(gè)新對(duì)象的過(guò)程,利用原有的模板創(chuàng)建一個(gè)新的對(duì)象,開(kāi)辟一個(gè)新的空間。
例如:ren r=new ren();
例如:在ren類(lèi)中定義一個(gè)Add()方法:
public class ren()
{
public int Add(int x,int y)
{
return x+y;
}
}
在主函數(shù)調(diào)用ren()這個(gè)方法:
static void Main(string[] args)
{
ren r=new ren();//創(chuàng)建ren類(lèi)的對(duì)象,命名r
int result=r.Add(100,200);//通過(guò)對(duì)象調(diào)用類(lèi)的方法,結(jié)果保存在局部變量中
}
3)【重點(diǎn)】方法重載(在同一命名空間下,同一個(gè)類(lèi)中,同一個(gè)方法,參數(shù)不同/參數(shù)的個(gè)數(shù)不同/返回值不同)
class shu//同一命名空間,同一個(gè)類(lèi)下
{
public int Add(int x,int y)//方法Add整數(shù)型相加
{
return x+y;
}
public double Add(double x,double y)//方法Add浮點(diǎn)數(shù)相加
{
return x+y;
}
}
兩個(gè)構(gòu)成重載關(guān)系的函數(shù)必須滿(mǎn)足如下關(guān)系:
1)函數(shù)名相同;
2)參數(shù)類(lèi)型不同,或者參數(shù)個(gè)數(shù)不同
5、【重點(diǎn)】函數(shù)在命名空間(又稱(chēng)為程序集)內(nèi)的引用時(shí),不同修飾符的區(qū)別:
1)public 公用的,在同一個(gè)命名空間內(nèi)可以引用;在不同的命名空間,需要引用當(dāng)前的命名空間,使用[using +命名空間的名稱(chēng)];
2)private 私有的,只對(duì)private位于的當(dāng)前這個(gè)類(lèi)起作用;
3)protected 受保護(hù)的,只作用于當(dāng)前這個(gè)類(lèi),但(集成)也可以作用于當(dāng)前這個(gè)類(lèi)的子類(lèi)。
4)static 靜態(tài)的,靜態(tài)變量只能在靜態(tài)方法中使用,靜態(tài)變量不能跨類(lèi)使用(只能在累加求和時(shí)使用)
6、類(lèi)的靜態(tài)成員(字段和方法)
1)靜態(tài)字段(即靜態(tài)變量)
public static int nianling;
2)靜態(tài)方法(即靜態(tài)函數(shù))
定義
class 類(lèi)名
{
public static void jingtai()
{
nianling=18;
}
}
【注意事項(xiàng)】
1、普通方法(不是靜態(tài)方法的):在當(dāng)前類(lèi)中,不需要初始化,可直接使用;
在當(dāng)前類(lèi)中,定義的變量可直接當(dāng)做一個(gè)普通變量使用。
2、在靜態(tài)方法中,不允許使用除了靜態(tài)變量之外的其他外部成員變量,除非對(duì)象初始化(new)就可以引用。
3.主函數(shù)(也屬于static)中,調(diào)用函數(shù)方法也必須初始化;只要是帶static的方法,都不能直接外部成員變量。
相關(guān)文章
c# HttpClient設(shè)置超時(shí)的步驟
這篇文章主要介紹了c# HttpClient設(shè)置超時(shí)的步驟,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03C#中類(lèi)與結(jié)構(gòu)的區(qū)別實(shí)例分析
這篇文章主要介紹了C#中類(lèi)與結(jié)構(gòu)的區(qū)別,類(lèi)與結(jié)構(gòu)是C#初學(xué)者比較輕易混淆的概念,本文加以實(shí)例說(shuō)明,需要的朋友可以參考下2014-08-08unity shader實(shí)現(xiàn)較完整光照效果
這篇文章主要為大家詳細(xì)介紹了unity shader實(shí)現(xiàn)較完整光照效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11深入淺析C#?11?對(duì)?ref?和?struct?的改進(jìn)
這篇文章主要介紹了C#?11?對(duì)?ref?和?struct?的改進(jìn),有了這些基礎(chǔ)設(shè)施,開(kāi)發(fā)者們將能輕松使用安全的方式來(lái)編寫(xiě)沒(méi)有任何堆內(nèi)存開(kāi)銷(xiāo)的高性能代碼,需要的朋友可以參考下2022-04-04Unity?UGUI的GraphicRaycaster射線投射組件介紹使用
這篇文章主要為大家介紹了Unity?UGUI的GraphicRaycaster射線投射組件介紹使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07