<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # abstract(C# 參考) **abstract** 修飾符指示所修飾的內容缺少實現或未完全實現。abstract 修飾符可用于類、方法、屬性、索引器和事件。在類聲明中使用 **abstract** 修飾符以指示某個類只能是其他類的基類。標記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現。 在此例中,類 Square 必須提供 Area 的實現,因為它派生自 ShapesClass: ``` abstract class ShapesClass { abstract public int Area(); } class Square : ShapesClass { int side = 0; public Square(int n) { side = n; } // Area method is required to avoid // a compile-time error. public override int Area() { return side * side; } static void Main() { Square sq = new Square(12); Console.WriteLine("Area of the square = {0}", sq.Area()); } interface I { void M(); } abstract class C : I { public abstract void M(); } } // Output: Area of the square = 144 ``` 抽象類具有以下特性: * 抽象類不能實例化。 * 抽象類可以包含抽象方法和抽象訪問器。 * 不能用 [sealed(C# 參考)](https://msdn.microsoft.com/zh-cn/library/88c54tsw.aspx) 修飾符修飾抽象類,因為這兩個修飾符的含義是相反的。采用 **sealed** 修飾符的類無法繼承,而 **abstract** 修飾符要求對類進行繼承。 * 從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實際實現。 在方法或屬性聲明中使用 **abstract** 修飾符以指示方法或屬性不包含實現。 抽象方法具有以下特性: * 抽象方法是隱式的虛方法。 * 只允許在抽象類中使用抽象方法聲明。 * 因為抽象方法聲明不提供實際的實現,所以沒有方法體;方法聲明只是以一個分號結束,并且在簽名后沒有大括號 ({ })。例如: ``` public abstract void MyMethod(); ``` 實現由一個重寫方法[override(C# 參考)](https://msdn.microsoft.com/zh-cn/library/ebca9ah3.aspx)提供,此重寫方法是非抽象類的一個成員。 * 在抽象方法聲明中使用 [static](https://msdn.microsoft.com/zh-cn/library/98f28cdx.aspx) 或 [virtual](https://msdn.microsoft.com/zh-cn/library/9fkccyh4.aspx) 修飾符是錯誤的。 除了在聲明和調用語法上不同外,抽象屬性的行為與抽象方法一樣。 * 在靜態屬性上使用 **abstract** 修飾符是錯誤的。 * 在派生類中,通過包括使用 [override](https://msdn.microsoft.com/zh-cn/library/ebca9ah3.aspx) 修飾符的屬性聲明,可以重寫抽象的繼承屬性。 有關抽象類的更多信息,請參見[抽象類、密封類及類成員(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173150.aspx)。 抽象類必須為所有接口成員提供實現。 實現接口的抽象類可以將接口方法映射到抽象方法上。例如: ``` interface I { void M(); } abstract class C : I { public abstract void M(); } ``` 在本例中,DerivedClass 類是從抽象類 BaseClass 派生的。抽象類包含一個抽象方法 AbstractMethod 和兩個抽象屬性 X 和 Y。 ``` abstract class BaseClass // Abstract class { protected int _x = 100; protected int _y = 150; public abstract void AbstractMethod(); // Abstract method public abstract int X { get; } public abstract int Y { get; } } class DerivedClass : BaseClass { public override void AbstractMethod() { _x++; _y++; } public override int X // overriding property { get { return _x + 10; } } public override int Y // overriding property { get { return _y + 10; } } static void Main() { DerivedClass o = new DerivedClass(); o.AbstractMethod(); Console.WriteLine("x = {0}, y = {1}", o.X, o.Y); } } // Output: x = 111, y = 161 ``` 在上面的示例中,如果嘗試通過使用下面的語句將抽象類實例化: ``` BaseClass bc = new BaseClass(); // Error ``` 將出現錯誤,指出編譯器無法創建抽象類“BaseClass”的實例。 ## C# 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 ## 請參閱 [C# 參考](https://msdn.microsoft.com/zh-cn/library/618ayhy6.aspx) [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [修飾符(C# 參考)](https://msdn.microsoft.com/zh-cn/library/6tcf2h8w.aspx) [virtual(C# 參考)](https://msdn.microsoft.com/zh-cn/library/9fkccyh4.aspx) [override(C# 參考)](https://msdn.microsoft.com/zh-cn/library/ebca9ah3.aspx) [C# 關鍵字](https://msdn.microsoft.com/zh-cn/library/x53a06bb.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看