欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中abstract的用法詳解

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

abstract可以用來修飾類,方法,屬性,索引器和時間,這里不包括字段. 使用abstrac修飾的類,該類只能作為其他類的基類,不能實例化,而且abstract修飾的成員在派生類中必須全部實現(xiàn),不允許部分實現(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,抽象類不能被實例化, 但可以有實例構(gòu)造函數(shù), 類是否可以實例化取決于是否擁有實例化的權(quán)限 (對于抽象類的權(quán)限是abstract, 禁止實例化),
即使不提供構(gòu)造函數(shù), 編譯器也會提供默認構(gòu)造函數(shù);

2,抽象類可以包含抽象方法和訪問器;

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

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

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

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

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

3,因為抽象方法只是聲明, 不提供實現(xiàn), 所以方法只以分號結(jié)束,沒有方法體,即沒有花括號部分;如

public abstract void MyMethod();

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

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

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

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

抽象類與接口:

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

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

如:

interface I 
{ 
void M(); 
} 
abstract class C: I 
{ 
public abstract void M(); 
} 
抽象類實例: 
// abstract_keyword.cs 
// 抽象類 
using System; 
abstract class BaseClass // 抽象類 
{ 
protected int _x = 100; //抽象類可以定義字段,但不可以是抽象字段,也沒有這一說法. 
protected int _y = 150; 
public BaseClass(int i) //可以定義實例構(gòu)造函數(shù),僅供派生的非抽象類調(diào)用; 這里顯式提供構(gòu)造函數(shù),編譯器將不再提供默認構(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; 
//如果基類中沒有定義無參構(gòu)造函數(shù),但存在有參數(shù)的構(gòu)造函數(shù), 
//那么這里派生類得構(gòu)造函數(shù)必須調(diào)用基類的有參數(shù)構(gòu)造函數(shù),否則編譯出錯 
public DerivedClass(int p) 
: base(p) //這里的:base(p)可省略,因為基類定義了默認的無參構(gòu)造函數(shù) 
{ 
fieldb = p; 
} 
public override string IdxString //覆蓋重新屬性 
{ 
get 
{ 
return idxstring; 
} 
set 
{ 
idxstring = value; 
} 
} 
public override char this[int i] //覆蓋重寫索引器 
{ 
get { return IdxString[i]; } 
} 
public override void AbstractMethod() 
{ 
_x++; 
_y++; 
}
public override int X // 覆蓋重寫屬性
{
 get
 {
  return _x + 10;
 }
}

public override int Y // 覆蓋重寫屬性
{
 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的用法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C# 對象映射的高性能方案

    C# 對象映射的高性能方案

    這篇文章主要介紹了C# 對象映射的高性能方案,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,有需要的朋友可以借鑒參考下
    2020-12-12
  • c# WPF中的TreeView使用詳解

    c# WPF中的TreeView使用詳解

    這篇文章主要介紹了c# WPF中的TreeView使用詳解,幫助大家更好的理解和學(xué)習(xí)使用c#技術(shù),感興趣的朋友可以了解下
    2021-03-03
  • C#自定義事件之屬性改變引發(fā)事件示例

    C#自定義事件之屬性改變引發(fā)事件示例

    這篇文章主要為大家詳細介紹了C#自定義事件之屬性改變引發(fā)事件示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C#中Serializable序列化實例詳解

    C#中Serializable序列化實例詳解

    這篇文章主要介紹了C#中Serializable序列化,以實例形式詳細講述了系列化的技術(shù)及各種序列化方法,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • C#利用時間和隨即字符串創(chuàng)建唯一的訂單編號

    C#利用時間和隨即字符串創(chuàng)建唯一的訂單編號

    本文介紹了利用時間和隨機字符串組合生成唯一訂單號的示例,從而保證訂單號不會重復(fù),希望能夠?qū)Υ蠹矣兴鶐椭?/div> 2016-03-03
  • c#中DateTime.Now函數(shù)的使用詳解

    c#中DateTime.Now函數(shù)的使用詳解

    本篇文章對c#中DateTime.Now函數(shù)的使用進行了介紹。需要的朋友參考下
    2013-05-05
  • C#隱藏控制臺鍵盤輸入的方法

    C#隱藏控制臺鍵盤輸入的方法

    這篇文章主要介紹了C#隱藏控制臺鍵盤輸入的方法,涉及C#針對系統(tǒng)底層調(diào)用的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Unity搖桿制作的方法

    Unity搖桿制作的方法

    這篇文章主要為大家詳細介紹了Unity搖桿制作的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C# Form自定義光標(biāo)的簡單實現(xiàn)

    C# Form自定義光標(biāo)的簡單實現(xiàn)

    這篇文章主要介紹了C# Form自定義光標(biāo)的簡單實現(xiàn),有需要的朋友可以參考一下
    2014-01-01
  • C#中string.format用法詳解

    C#中string.format用法詳解

    這篇文章主要介紹了C#中string.format用法,以實例形式較為詳細的講述了string.format格式化的各種用法,非常具有實用價值,需要的朋友可以參考下
    2014-11-11

最新評論