亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#面向對象特征的具體實現及作用詳解

2020-01-24 03:06:21
字體:
來源:轉載
供稿:網友

眾所周知,面向對象編程的特點為:封裝、繼承、多態。C#是一門完全面向對象的語言,由于比Java推出的時間還要晚,所以對面向對象的思想的體現比Java還要完美,那么在C#中如何體現封裝、繼承和多態呢?下面舉例并進行說明。

1.封裝

封裝的好處有以下幾點:

①數據不外泄,可以做到一定的保護

②類的使用者不用考慮具體的數據運算,方便

③程序結構性強,層次清晰,便于維護

對相關的字段、方法進行封裝固然對面向對象編程起到不可缺少的重要作用,但并不代表不可以訪問類或者說具體的實例化對象中的內容,而且為使用者提供接口,僅僅讓他們調用就可以了,他們只做他們的工作,不需要考慮或者顧及你寫的類具體是做什么的,更不用考慮你寫的每一行代碼是什么意思。

在C#中,對于變量的封裝,往往將需要被在本類以外調用的,以屬性的形式出現,而不像C++中是直接以public成員或者private成員加上相關的方法調用,那樣要么不符合面向對象的特點,要么太麻煩。

C#中屬性的聲明:

復制代碼 代碼如下:

public class TestClass
    {
        public string Info
        {
            get;
            set;
        }
    }

屬性的聲明類似一個函數,首先有訪問級別(如果設成private等于設成私有字段,還不如直接寫個變量),然后是類型,接著是屬性名,后面是一對花括號,里面的get、set用于控制屬性只讀,還是只寫,還是可讀可寫。當然,這里的get、set都是直接以分號結束,被稱作是自動屬性,如果有需要,也可以自定義get和set,get中需要加上和屬性類型一直的返回類型。

C#對方法的封裝只需要改變方法的訪問級別,比如設為public,或者設為private(或者不寫),對應的就是可從外部訪問以及僅能從內部訪問。

2.繼承

大家都知道繼承機制可以提高代碼的可復用性和可擴展性,以提高開發效率,減少代碼量。C#和C++不同,可從一個類繼承或實現多個接口,但不可以從多個類繼承。

繼承語法示例:

復制代碼 代碼如下:

class Son : Father
{
      //Do Something
}

繼承可以使子類或者說派生類獲得父類或者說基類的所有可被繼承的內容,比如字段、方法,但對訪問級別有一定限制,那就是private級別不可被繼承。除了這點,這里需要說明的是,如果需要調用基類(父類)中的成員,需要使用base關鍵字,而如果在方法中,需要使用當前類中的成員,但因為重名(比如參數和類成員變量重名),需要使用this關鍵字來確定到底訪問的是哪個成員。

C#所有的類都繼承自System.Object,所以不管是什么類都有幾個固定的、公共的方法,這是C#體現面向對象思想非常不錯的一點!

下來說一下靜態類的特征:

①靜態類不能使用sealed或abstract修飾符

②靜態類必須直接繼承自System.Object,不能是其他

③靜態類不能實現任何接口

④靜態類不能包含任何操作符

⑤靜態類不能包含使用protected或protected internal修飾的靜態成員

⑥靜態類智能包含靜態成員

⑦靜態類可以包含靜態構造函數,但不能包含實例構造函數

⑧靜態類不能被實例化

⑨靜態類是密封的,不能被繼承

由于靜態類是在加載包含該類的程序集時由CLR自動加載,所以用靜態類實現一些不操作數據,并且不與代碼中的特定對象關聯的方法是非常不錯的選擇。

剩下要注意的就是在使用繼承的時候,搞清構造函數的調用順序,先初始化類的實例字段,再調用基類構造函數,最后調用自己的構造函數。

3.多態

通過基類的引用調用在派生類中實現的方法時,不同的派生類將產生不同的調用結果,這就是多態,而C#中的多態分為運行時多態和編譯時多態。編譯時多態利用函數重載實現,運行時多態通過覆寫虛方法實現。

①方法重載

前提:在同一個類中,方法名相同,方法簽名不同(包括方法的名稱及參數信息(形參的修飾符、數目、類型以及泛型參數的數目),但返回值類型、形參和類型參數的名稱并不屬于方法簽名的一部分)

方法重載示例:

復制代碼 代碼如下:

public string Function(int x)
{
 return x.ToString();
}
public string Function(DateTime x)
{
 return x.ToString("yyyy-MM-dd HH:mm:ss.fff");
}
public string Function(double x,double y)
{
 return (x+y).ToString();
}

以上示例實現了一個名為Function,返回類型為string的三種重載,分別是將一個int型參數返回為string型,將一個DateTime型參數返回為“年-月-日 時:分:秒.毫秒”格式的字符串,將兩個double型參數相加的和轉換為string類型

②虛方法

定義虛方法需要使用virtual關鍵字,如下所示:

復制代碼 代碼如下:

class Car
{
 public virtual void Drive()
 {
  Console.WriteLine("駕駛..");
 }
}

之所以將Drive設置為虛方法,就是為了讓派生的子類去重寫,這樣所有Car的派生類都可以實現新的Drive方法。

注意:virtual關鍵字必須位于返回方法的返回類型之前,虛方法可以有方法體,而抽象方法不允許有方法體

剩下兩項注意:靜態成員函數不能是虛函數,構造函數不能是虛函數

覆寫方法示例:

復制代碼 代碼如下:

class Track : Car
{
 public override void Drive()
 {
  Console.WriteLine("開大卡車");
 }
}
class Jeep : Car
{
 public override void Drive()
 {
  Console.WriteLine("開吉普車");
 }
}

③抽象類及抽象方法
有以下幾點注意:(1)它們不能被實例化(2)抽象方法不能有方法體,所在類必須是抽象類(3)使用abstract關鍵字(4)抽象方法無實現,后面緊跟分號(5)抽象類的派生類必須實現所有抽象方法(6)當抽象類從基類繼承虛方法時,抽象類可以使用抽象方法重寫該虛方法。

具體的例子就不舉了

4.總結

所有的面相對象思想,歸根結底是為了簡化代碼,減少代碼量,構建更符合現實生活邏輯的程序代碼,從而減輕程序員的負擔。不能一味地或者說刻意地去使用面相對象的思想而忽略了程序所實現的功能或者框架,要根據實際情況,合理利用面相對象思想,減輕負擔,并為他人提供方便!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线免费视频| 亚洲欧美国产日韩天堂区| 日韩免费在线看| 欧美日韩另类字幕中文| 亚洲欧美福利视频| 亚洲精品小视频在线观看| 久久露脸国产精品| 中文字幕av一区二区三区谷原希美| 亚洲精品中文字幕av| xvideos国产精品| 久久久久久久久久久成人| 在线视频亚洲欧美| 麻豆一区二区在线观看| 久久精品国产免费观看| 久久免费国产精品1| 久久久久久91| 日韩欧美国产骚| 亚洲精品电影网| 国内偷自视频区视频综合| 国产成人精品电影| 欧美成人性色生活仑片| 欧美国产日韩一区二区在线观看| 日韩女优在线播放| 欧美国产极速在线| 国产精品中文字幕久久久| 18性欧美xxxⅹ性满足| 国产精品色午夜在线观看| 亚洲欧美国产精品久久久久久久| 国产中文字幕91| 亚洲精品网址在线观看| 国产精品福利在线观看网址| 国产精品久久久久久久电影| 91免费看视频.| 精品亚洲一区二区三区四区五区| 成人久久久久爱| 国产精品成熟老女人| 亚洲精品少妇网址| 日韩精品在线视频观看| 青青久久av北条麻妃黑人| 亚洲深夜福利视频| 日韩有码在线观看| 深夜福利日韩在线看| 久久久久久午夜| 国产美女主播一区| 中文字幕在线看视频国产欧美在线看完整| 久久伊人精品一区二区三区| 日本高清不卡在线| 亚洲精品国产精品国自产在线| 国产精品久久在线观看| 成人精品一区二区三区电影免费| 国产精品吹潮在线观看| 日韩精品日韩在线观看| 欧美精品中文字幕一区| 国产97在线视频| 大胆欧美人体视频| 欧美成人免费播放| 国产一区二区丝袜| 成人在线免费观看视视频| 久久精品视频免费播放| 久久久久久久久久久91| 日韩精品极品视频免费观看| 国产综合在线观看视频| 国产欧美一区二区三区久久| 俺去亚洲欧洲欧美日韩| 久久偷看各类女兵18女厕嘘嘘| 国产99久久精品一区二区永久免费| 精品久久中文字幕久久av| 69影院欧美专区视频| 欧美巨大黑人极品精男| 欧美日韩国产色| 亚洲精品久久久久久久久久久| 欧美成人免费全部| 国产欧美一区二区三区久久| 欧美日韩亚洲国产一区| 国产一区二区三区在线视频| 欧美美女操人视频| 欧美精品videosex牲欧美| 国产精品自拍偷拍视频| 97国产一区二区精品久久呦| 中文字幕亚洲一区在线观看| 国内自拍欧美激情| 亚洲国产91精品在线观看| 韩剧1988在线观看免费完整版| 国产97在线视频| 国产精品一区二区三区成人| 日韩精品中文字幕在线| 自拍偷拍亚洲一区| 亚洲第一区中文字幕| 欧美国产乱视频| 亚洲已满18点击进入在线看片| 亚洲欧美精品伊人久久| 日韩精品在线观看一区二区| 在线观看日韩专区| 欧美激情免费在线| 超碰97人人做人人爱少妇| 亚洲欧美中文日韩在线| 欧美日韩一区二区三区| 久久免费精品日本久久中文字幕| 久久久国产精彩视频美女艺术照福利| 亚洲国产精品字幕| 精品视频偷偷看在线观看| 国产精品黄色影片导航在线观看| 亚洲欧美中文在线视频| 国产精品高潮呻吟久久av野狼| 亚洲精美色品网站| 成人黄色午夜影院| 奇米一区二区三区四区久久| 国产日韩一区在线| www亚洲欧美| 国产区精品视频| 国产丝袜一区二区三区免费视频| 在线观看国产成人av片| 久久精品欧美视频| 国产精品一区二区三区在线播放| 精品欧美国产一区二区三区| 精品网站999www| 91夜夜未满十八勿入爽爽影院| 国产一区二区在线播放| 久久久中精品2020中文| 国产91ⅴ在线精品免费观看| 久久91精品国产91久久久| 色噜噜亚洲精品中文字幕| 中文字幕在线观看亚洲| 欧美日韩成人在线视频| 丰满岳妇乱一区二区三区| 亚洲欧美在线一区二区| 黑人欧美xxxx| 亚洲午夜精品久久久久久久久久久久| 亚洲国产黄色片| 久久成人精品一区二区三区| 国产精品久久久精品| 欧美激情国产日韩精品一区18| 成人美女av在线直播| 国产精品欧美激情在线播放| 亚洲国产精品va| 亚洲精品自在久久| 亚洲国产欧美精品| 成人国产精品色哟哟| 国产精品国模在线| 夜夜嗨av一区二区三区免费区| 精品美女国产在线| 韩国精品美女www爽爽爽视频| 午夜精品美女自拍福到在线| 久久影视三级福利片| 日韩在线www| 亚洲精品视频在线观看视频| 国内精久久久久久久久久人| 亚洲电影免费在线观看| 91在线精品视频| 久久福利视频网| 日韩成人av一区| 国产精品视频导航| 1769国内精品视频在线播放| 夜夜嗨av色一区二区不卡| 亚洲第一精品福利| 91在线无精精品一区二区| 精品久久久久久久久久久| 2025国产精品视频| 岛国视频午夜一区免费在线观看| 亚洲春色另类小说| 欧美日韩电影在线观看| 欧美日韩一区二区在线| 精品国产网站地址| 国产成人av网|