国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

怎么樣去理解抽象類

2019-11-14 16:35:00
字體:
來源:轉載
供稿:網友

      假如很多人要買水果吃,吃的動作只有一個,但是有的人要用現金買,有的人用信用卡,有的人賒帳。要為每個人定義一個類,就要定義多個相同的吃的方法。如果定義一個抽象類,在里面實現吃的方法,再做一個買的抽象方法。那每個人的類都從這個抽象類派生下來,只要實現買的方法即可,吃的方法就可以直接用父類的方法了。如果要改吃的方法就不用改多個,只要改這個抽象類里的就行了。    

 

一個接口:

  public interface IGrabber    {        /// <summary>        /// 是否可用。        /// </summary>        bool Enabled        {            get;            set;        }        /// <summary>        /// 抓取器名。        /// </summary>        string Name        {            get;            set;        }        /// <summary>        /// 源字符串最大長度。        /// </summary>        uint MaxSourceLength        {            get;            set;        }        /// <summary>        /// 源字符串最小長度。        /// </summary>        uint MinSourceLength        {            get;            set;        }        /// <summary>        /// 抓取。        /// </summary>        /// <param name="source">要抓取的源。</param>        /// <param name="target">抓取結果。</param>        /// <returns>是否抓取成功。</returns>        bool Grab(string source, out string[] targets);        /// <summary>        /// 抓取。        /// </summary>        /// <param name="source">要抓取的源。</param>        /// <param name="targets">抓取結果。</param>        /// <returns></returns>        bool Grab(IList<Keys> source, out string[] targets)

 

 一個抽象類:

  public abstract class BaseGrabber : IGrabber    {        #region IGrabber成員。        public virtual bool Enabled        {            get;            set;        }        public virtual string Name        {            get;            set;        }        public virtual uint MaxSourceLength        {            get;            set;        }        public virtual uint MinSourceLength        {            get;            set;        }        public abstract bool Grab(string source, out string[] targets);        public abstract bool Grab(IList<Keys> source, out string[] targets);        #endregion        /// <summary>        /// 是否重構數據源(識別方向鍵、刪除鍵等按鍵對輸入字符的影響,返回真實的輸入項)。        /// </summary>        public virtual bool IsRestructured        {            get;            set;        }        PRotected BaseGrabber()        {            this.Name = this.GetType().Name;            this.MinSourceLength = 0;            this.MaxSourceLength = 256;            this.Enabled = true;            this.IsRestructured = true;        }        /// <summary>        /// 重構數據源(識別方向鍵、刪除鍵等按鍵對輸入字符的影響,返回真實的輸入項)。        /// </summary>        /// <param name="source"></param>        /// <returns></returns>        public virtual string RestructureSource(string source)        {            return source;        }        /// <summary>        /// 重構數據源(識別方向鍵、刪除鍵等按鍵對輸入字符的影響,返回真實的輸入項)。        /// </summary>        /// <param name="source"></param>        /// <returns></returns>        public virtual IList<Keys> RestructureSource(IList<Keys> source)        {            int count = source.Count;            for (int i = 0; i < count; i++)            {                Keys key = source[i];                switch (key)                {                    case Keys.Back:                        source.RemoveAt(i);                        source.RemoveAt(i - 1);                        i -= 2;                        count -= 2;                        break;                }            }            return source;        }

 終于搞明白了,還是上面那個例子說的是在。從接口到抽象類,在從抽象類到類,在類到對象。這就是面向對象。

下面是有關抽象類的一些基本感念:

抽象類與抽象方法由abstract修飾

抽象方法沒有方法體

抽象類的派生類必須實現抽象方法體

抽象類只能作為基類,無法實例化。

重點就在于無法實例化,而且為了代碼的清晰度,方便以后修改。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓬莱市| 清原| 东方市| 洛南县| 乌苏市| 秭归县| 托克托县| 客服| 新民市| 太原市| 彰化县| 平安县| 彭水| 鄂托克旗| 尖扎县| 图们市| 泽州县| 丰城市| 临城县| 阳江市| 金秀| 馆陶县| 安仁县| 宝鸡市| 武邑县| 平遥县| 教育| 白河县| 望城县| 龙泉市| 德庆县| 余庆县| 资阳市| 永善县| 金华市| 云南省| 东兰县| 盐池县| 东方市| 莱芜市| 山东省|