C#抽象類別和抽象方法

來源:互聯網
上載者:User

標籤:style   io   ar   color   使用   sp   on   bs   cti   

如果一個類不與具體的事物相聯絡,而只是表達一種抽象的概念,僅僅是作為其衍生類別的一個基類,這樣的類就是抽象類別,在抽象類別中聲明方法時,如果加上abstract時就是抽象方法

1.抽象類別概述及聲明

抽象類別與非抽象類別的主要區別:

·抽象類別不能直接被執行個體化

·抽象類別中可以包含抽象成員,但非抽象類別中不可以

·抽象類別不能被密封

舉個小例子

public abstract class oneClass

{

  public int i;

  public void denylau()

  {

  }

}

2.抽象方法概述及聲明

聲明抽象方法時需注意:·抽象方法必須聲明在抽象類別中  ·聲明抽象方法時,不能使用virtual、static、private修飾符。

在抽象類別中抽象方法不提供實現。

如:

public abstract class myTestClass()

{

  public abstract void method();

}

3.抽象類別與抽象方法的使用

直接舉例子,講解例子嘍!

using System;
using System.Collections.Generic;
using System.Text;

namespace _
{
    public abstract class myClass
    {
        private string id = "";
        private string name = "";
        /// <summary>
        /// 編號屬性及實現
        /// </summary>
        public string ID
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }
        /// <summary>
        /// 姓名屬性及實現
        /// </summary>
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        /// <summary>
        /// 抽象方法,用來輸出資訊
        /// </summary>
        public abstract void ShowInfo();
    }
    public class DriveClass:myClass                     //繼承抽象類別
    {
        /// <summary>
        /// 重寫抽象類別中輸出資訊的方法
        /// </summary>
        public override void ShowInfo()
        {
            Console.WriteLine(ID + " " + Name);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DriveClass driveclass = new DriveClass();   //執行個體化衍生類別
            myClass myclass = driveclass;               //使用衍生類別對象執行個體化抽象類別
            myclass.ID = "BH0001";                      //使用抽象類別對象訪問抽象類別中的編號屬性
            myclass.Name = "TM";                        //使用抽象類別對象訪問抽象類別中的姓名屬性
            myclass.ShowInfo();                         //使用抽象類別對象調用抽象類別中的的抽象方法
        }
    }
}

上例中通過衍生類別的對象driveclass來執行個體化抽象類別,然後使用抽象類別訪問抽象類別中的屬性及方法。

上面這個小例子,細心的朋友會發現,怎麼抽象類別和我們上一篇文章講的介面差不多嗎?那麼究竟抽象類別和介面存在哪些區別呢?

Ok,下面就介紹下抽象類別和介面的區別嘍:

·它們的衍生類別只能繼承一個基類,即只能繼承一個抽象類別,但是可以繼承多個介面。

·抽象類別中可以定義成員的實現,但介面中不可以。

·抽象類別中包含欄位、建構函式、解構函式、靜態成員或常量等,介面中不可以。

·抽象類別中的成員可以私人的(只要不是抽象的)、受保護的、內部的或受保護的內部成員,但介面中的成員必須是公用的。

PS:抽象類別和介面這兩種類型用於完全不同的目的。抽象類別主要用作對象系列的基類,共用某些主要特性,例如共同的目的和結構。介面則主要用於類,這些類在基礎水平上有所不同,但仍然可以完成某些相同的任務。

C#抽象類別和抽象方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.