走近抽象類與抽象方法

一.定義

     MSDN:抽象類是一些留有部分或所有成員未實現的類,以即可以由派生類來提供實現。在C#中,當一個類被abstract關鍵字修飾,咱們就稱之爲抽象類。3d

二.抽象類的特色

抽象類是不完整的類,由於抽象類一般包含抽象方法,而抽象方法也是不完整的;由於抽象方法不提供具體的實現,只是讓子類苦逼的實現,因此說,抽象類是不完整的類。blog

1.抽象類不能被實例化。編譯器

1-1string

  public abstract class People
  {
        protected abstract void Speak(string s);
  }

1-2編譯

 People p = new People();

當咱們試圖執行1-2的代碼時,編譯器提示以下錯誤:class

  

2.抽象類能夠包含抽象方法,也能夠包含普通方法,可是普通方法放在抽象類中其實是沒有意義的。方法

2-1im

   public abstract class People
    {
        protected abstract void Speak(string s);

        protected void Walk()
        { 
        
        }
    }

2-1的代碼編譯是沒有問題的,但Walk方法定義在抽象類中沒有意義。static

也許有讀者會問,普通類是否能夠包含抽象方法呢?答案是否認的。db

2-2

public class Car
{
        protected abstract void Run();
}

2-2的代碼編譯後將報以下錯誤:

  

3.抽象類不能被sealed,static關鍵字修飾,由於抽象類是做爲其它類的基類,而sealed表示該類不能做爲基類。

3-1

 public sealed abstract class People
 {
        protected abstract void Speak(string s);

        protected void Walk()
        { 
        
        }
 }

3-1的代碼將報以下錯誤:

 

4.從抽象類派生的非抽象類必須包含抽象類中抽象方法的全部實現。

   4-1

 public abstract class People
 {
        protected abstract void Speak(string s);

        protected void Walk()
        { 
        
        }
 }

 public class Teacher:People
 { 
    
 }

4-1代碼報以下錯誤:

三.抽象方法

1.抽象方法不能包含方法體。

1-1

 public abstract class People
 {
        protected abstract void Speak(string s);

        protected abstract void ShowHand()
        {
            
        }

        protected void Walk()
        { 
        
        }
 }

1-1代碼將報以下錯誤:

2.抽象方法代表派生類必須提供該方法的實現。  

相關文章
相關標籤/搜索