最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中abstract的用法詳解

 更新時(shí)間:2016年12月13日 16:40:57   作者:qq_30122639  
abstract可以用來(lái)修飾類,方法,屬性,索引器和時(shí)間,這里不包括字段. 使用abstrac修飾的類,該類只能作為其他類的基類,不能實(shí)例化,而且abstract修飾的成員在派生類中必須全部實(shí)現(xiàn),不允許部分實(shí)現(xiàn),否則編譯異常

abstract可以用來(lái)修飾類,方法,屬性,索引器和時(shí)間,這里不包括字段. 使用abstrac修飾的類,該類只能作為其他類的基類,不能實(shí)例化,而且abstract修飾的成員在派生類中必須全部實(shí)現(xiàn),不允許部分實(shí)現(xiàn),否則編譯異常. 如:

using System;
namespace ConsoleApplication8 
{ 
class Program 
{ 
static void Main(string[] args) 
{ 
BClass b = new BClass(); 
b.m1(); 
} 
} 
abstract class AClass 
{ 
public abstract void m1(); 
public abstract void m2(); 
} 
class BClass : AClass 
{ 
public override void m1() 
{ 
throw new NotImplementedException(); 
} 
//public override void m2() 
//{ 
// throw new NotImplementedException(); 
//} 
} 
} 

 Abstract classes have the following features:

抽象類擁有如下特征:

1,抽象類不能被實(shí)例化, 但可以有實(shí)例構(gòu)造函數(shù), 類是否可以實(shí)例化取決于是否擁有實(shí)例化的權(quán)限 (對(duì)于抽象類的權(quán)限是abstract, 禁止實(shí)例化),
即使不提供構(gòu)造函數(shù), 編譯器也會(huì)提供默認(rèn)構(gòu)造函數(shù);

2,抽象類可以包含抽象方法和訪問(wèn)器;

3,抽象類不能使用sealed修飾, sealed意為不能被繼承;

4,所有繼承自抽象類的非抽象類必須實(shí)現(xiàn)所有的抽象成員,包括方法,屬性,索引器,事件;

abstract修飾的方法有如下特征:

1,抽象方法即是虛擬方法(隱含);

2,抽象方法只能在抽象類中聲明;

3,因?yàn)槌橄蠓椒ㄖ皇锹暶? 不提供實(shí)現(xiàn), 所以方法只以分號(hào)結(jié)束,沒(méi)有方法體,即沒(méi)有花括號(hào)部分;如

public abstract void MyMethod();

4,override修飾的覆蓋方法提供實(shí)現(xiàn),且只能作為非抽象類的成員;

5,在抽象方法的聲明上不能使用virtual或者是static修飾.即不能是靜態(tài)的,又因?yàn)閍bstract已經(jīng)是虛擬的,無(wú)需再用virtual強(qiáng)調(diào).
抽象屬性盡管在行為上與抽象方法相似,但仍有有如下不同:

1,不能在靜態(tài)屬性上應(yīng)用abstract修飾符;

2,抽象屬性在非抽象的派生類中覆蓋重寫(xiě),使用override修飾符;

抽象類與接口:

1,抽象類必須提供所有接口成員的實(shí)現(xiàn);

2,繼承接口的抽象類可以將接口的成員映射位抽象方法.

如:

interface I 
{ 
void M(); 
} 
abstract class C: I 
{ 
public abstract void M(); 
} 
抽象類實(shí)例: 
// abstract_keyword.cs 
// 抽象類 
using System; 
abstract class BaseClass // 抽象類 
{ 
protected int _x = 100; //抽象類可以定義字段,但不可以是抽象字段,也沒(méi)有這一說(shuō)法. 
protected int _y = 150; 
public BaseClass(int i) //可以定義實(shí)例構(gòu)造函數(shù),僅供派生的非抽象類調(diào)用; 這里顯式提供構(gòu)造函數(shù),編譯器將不再提供默認(rèn)構(gòu)造函數(shù). 
{ 
fielda = i; 
} 
public BaseClass() 
{ 
} 
private int fielda; 
public static int fieldsa = 0; 
public abstract void AbstractMethod(); // 抽象方法 
public abstract int X { get; } //抽象屬性 
public abstract int Y { get; } 
public abstract string IdxString { get; set; } //抽象屬性 
public abstract char this[int i] { get; } //抽象索引器 
}
class DerivedClass : BaseClass 
{ 
private string idxstring; 
private int fieldb; 
//如果基類中沒(méi)有定義無(wú)參構(gòu)造函數(shù),但存在有參數(shù)的構(gòu)造函數(shù), 
//那么這里派生類得構(gòu)造函數(shù)必須調(diào)用基類的有參數(shù)構(gòu)造函數(shù),否則編譯出錯(cuò) 
public DerivedClass(int p) 
: base(p) //這里的:base(p)可省略,因?yàn)榛惗x了默認(rèn)的無(wú)參構(gòu)造函數(shù) 
{ 
fieldb = p; 
} 
public override string IdxString //覆蓋重新屬性 
{ 
get 
{ 
return idxstring; 
} 
set 
{ 
idxstring = value; 
} 
} 
public override char this[int i] //覆蓋重寫(xiě)索引器 
{ 
get { return IdxString[i]; } 
} 
public override void AbstractMethod() 
{ 
_x++; 
_y++; 
}
public override int X // 覆蓋重寫(xiě)屬性
{
 get
 {
  return _x + 10;
 }
}

public override int Y // 覆蓋重寫(xiě)屬性
{
 get
 {
  return _y + 10;
 }
}

static void Main()
{
 DerivedClass o = new DerivedClass(1);
 o.AbstractMethod();
 Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);
}
}

以上所述是小編給大家介紹的C#中abstract的用法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C#做線形圖的方法

    C#做線形圖的方法

    在本篇內(nèi)容中小編給大家總結(jié)了C#怎么做線形圖的教程內(nèi)容,對(duì)此有需要的朋友們可以跟著學(xué)習(xí)下。
    2018-12-12
  • 在C# 8中如何使用默認(rèn)接口方法詳解

    在C# 8中如何使用默認(rèn)接口方法詳解

    這篇文章主要給大家介紹了關(guān)于在C# 8中如何使用默認(rèn)接口方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • DevExpress之ChartControl的SeriesTemplate實(shí)例

    DevExpress之ChartControl的SeriesTemplate實(shí)例

    這篇文章主要介紹了DevExpress之ChartControl的SeriesTemplate用法實(shí)例,實(shí)現(xiàn)了餅狀Series百分比顯示的效果,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • c# 用ELMAH日志組件處理異常

    c# 用ELMAH日志組件處理異常

    這篇文章主要介紹了c# 用ELMAH日志組件處理異常,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • C#實(shí)現(xiàn)給Word每一頁(yè)設(shè)置不同文字水印的方法詳解

    C#實(shí)現(xiàn)給Word每一頁(yè)設(shè)置不同文字水印的方法詳解

    Word中設(shè)置水印時(shí),可使用預(yù)設(shè)的文字或自定義文字設(shè)置為水印效果,但通常添加水印效果時(shí),會(huì)對(duì)所有頁(yè)面都設(shè)置成統(tǒng)一效果。本文以C#?代碼為例,對(duì)Word每一頁(yè)設(shè)置不同的文字水印效果作詳細(xì)介紹,感興趣的可以了解一下
    2022-07-07
  • C#實(shí)現(xiàn)按數(shù)據(jù)庫(kù)郵件列表發(fā)送郵件的方法

    C#實(shí)現(xiàn)按數(shù)據(jù)庫(kù)郵件列表發(fā)送郵件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)按數(shù)據(jù)庫(kù)郵件列表發(fā)送郵件的方法,涉及C#讀取數(shù)據(jù)庫(kù)及通過(guò)自定義函數(shù)發(fā)送郵件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)簡(jiǎn)單的飛行棋游戲

    C#實(shí)現(xiàn)簡(jiǎn)單的飛行棋游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單的飛行棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 使用位運(yùn)算實(shí)現(xiàn)網(wǎng)頁(yè)中的過(guò)濾、篩選功能實(shí)例

    使用位運(yùn)算實(shí)現(xiàn)網(wǎng)頁(yè)中的過(guò)濾、篩選功能實(shí)例

    這篇文章主要介紹了使用位運(yùn)算實(shí)現(xiàn)網(wǎng)頁(yè)中的過(guò)濾、篩選功能實(shí)例,一個(gè)比常規(guī)拼接SQL字符串更有新意的一個(gè)解決思路,需要的朋友可以參考下
    2014-07-07
  • C#避免類型轉(zhuǎn)換異常的三種方法

    C#避免類型轉(zhuǎn)換異常的三種方法

    在 C# 中,可以通過(guò)使用類型轉(zhuǎn)換操作符或者類型轉(zhuǎn)換方法來(lái)進(jìn)行類型轉(zhuǎn)換,但是在進(jìn)行類型轉(zhuǎn)換時(shí),可能會(huì)出現(xiàn)類型轉(zhuǎn)換異常,為了避免這種異常的發(fā)生,本文給大家介紹了幾種方法,感興趣的朋友可以參考一下
    2024-04-04
  • C#實(shí)現(xiàn)創(chuàng)建,刪除,查找,配置虛擬目錄實(shí)例詳解

    C#實(shí)現(xiàn)創(chuàng)建,刪除,查找,配置虛擬目錄實(shí)例詳解

    這篇文章主要介紹了C#創(chuàng)建,刪除,查找,配置虛擬目錄的方法,以實(shí)例形式較為詳細(xì)的分析了C#針對(duì)虛擬目錄的創(chuàng)建、刪除、查找等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論

崇阳县| 娱乐| 无为县| 吉水县| 房山区| 德昌县| 滨州市| 银川市| 赫章县| 勃利县| 安多县| 平定县| 定南县| 韶关市| 资阳市| 清水县| 久治县| 囊谦县| 策勒县| 嘉峪关市| 石家庄市| 临汾市| 二连浩特市| 巩义市| 永春县| 松滋市| 遂昌县| 兴隆县| 阜康市| 灵山县| 泉州市| 大埔区| 大冶市| 连城县| 滦南县| 永仁县| 乾安县| 敦煌市| 东辽县| 凤庆县| 常德市|