天天看點

抽象類

抽象類>什麼是抽象類

抽象類的聲明中包含abstract關鍵字。隻要有一個方法具有abstract修飾即聲明為抽象方法,那麼這個類就是抽象類。

抽象類,就是提供類的定義,不提供類的具體實作細節(可實作部分細節,但不全實作)。抽象類的實作交由派生類來完成。

抽象類>聲明抽象類

抽象類
抽象類

代碼

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

    /// <summary>

    /// 購買書籍的抽象類

    /// </summary>

    public abstract class BuyBookOperate

    {

        public abstract void BuyBook();

        //書店

        public abstract string BookShop

        { get; set; }

        //書名

        public abstract string BookName

        //支付行為

        public void PayMoney()

        {

            Console.WriteLine("支付款項正在進行中......");

        }

        //總金額

        private int _totalmoney;

        public int TotalMoney

            get

            {

                return _totalmoney;

            }

            set

                _totalmoney = value;

                if (_totalmoney > 100)

                {

                    Console.WriteLine("您購買的書籍價格超過了100塊錢");

                }

    }

}

抽象類>實作抽象類

抽象類
抽象類

    /// 抽象類的實作。

    public class ConcreteBuyBook : BuyBookOperate

        //實作抽象方法

        public override void BuyBook()

            BookShop = "新華書店";

            BookName = "C#的書籍";

            TotalMoney = 101;

            PayMoney();

        private string _bookshop;

        //實作抽象屬性

        public override string BookShop

                return _bookshop;

                _bookshop = value;

        private string _bookname;

        //實作抽象屬性。

        public override string BookName

                return _bookname;

                _bookname = value;

運作它

抽象類
抽象類

using System.Collections;

    class Program

        static void Main(string[] args)

            ConcreteBuyBook cb1 = new ConcreteBuyBook();

            Console.WriteLine(cb1.ToString() + "類的輸出結果為:");

            Buybook(cb1);

        /// <summary>

        /// 買書的動作,傳遞抽象類的實作.

        /// </summary>

        /// <param name="bop"></param>

        static void Buybook(BuyBookOperate bop)

            //調用在抽象類中定義的BuyBook方法

            bop.BuyBook();

多态>什麼是多态

具有名稱相同的方法或屬性,的多個類,這些類具有不同的行為,但共享相同的基類或接口。

多态>多态的實作

抽象類
抽象類

Concrete2BuyBook.cs

    public class Concrete2BuyBook : BuyBookOperate

            BookShop = "某專業書店";

            BookName = "ASP.NET的書籍";

            TotalMoney = 102;

抽象類
抽象類

Program.cs

            Concrete2BuyBook cb2 = new Concrete2BuyBook();

            Console.WriteLine(cb2.ToString() + "類的輸出結果為:");

            Buybook(cb2);

接口>什麼是接口

接口和抽象類相同點是,不能被直接執行個體化。

接口和抽象類不同點是,接口并不提供任何實作,接口所有的方法與屬性都是抽象的。可以利用接口實作多繼承。

接口>實作接口

如果聲明兩個具有相同方法名稱的接口,當在一個類中同時進行實作這兩個接口,要對其中一個隐式實作接口,而另外一個要求實作顯式接口。否則報錯。 

抽象類
抽象類

namespace interface2

    public interface Ibook1

        void GetPrice();

    public interface Ibook2

    public class Book : Ibook1, Ibook2

        #region Ibook2 成員

        public void GetPrice()

            Console.WriteLine("Ibook2的隐式接口實作");

        #endregion

        #region Ibook1 成員

        void Ibook1.GetPrice()

            Console.WriteLine("Ibook1顯示接口實作");

抽象類
抽象類

Interface1.cs

合乎自然而生生不息。。。

上一篇: 抽象類
下一篇: 抽象類