怎么样去理解抽象类

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

假如很多人要买水果吃,吃的动作只有一个,但是有的人要用现金买,有的人用信用卡,有的人赊帐。要为每个人定义一个类,就要定义多个相同的吃的方法。如果定义一个抽象类,在里面实现吃的方法,再做一个买的抽象方法。那每个人的类都从这个抽象类派生下来,只要实现买的方法即可,吃的方法就可以直接用父类的方法了。如果要改吃的方法就不用改多个,只要改这个抽象类里的就行了。

一个接口:

publicinterfaceIGrabber

{///<summary>///是否可用。///</summary>boolEnabled

{get;set;

}///<summary>///抓取器名。///</summary>stringName

{get;set;

}///<summary>///源字符串最大长度。///</summary>uintMaxSourceLength

{get;set;

}///<summary>///源字符串最小长度。///</summary>uintMinSourceLength

{get;set;

}///<summary>///抓取。///</summary>///<param name="source">要抓取的源。</param>///<param name="target">抓取结果。</param>///<returns>是否抓取成功。</returns>boolGrab(stringsource,outstring[] targets);///<summary>///抓取。///</summary>///<param name="source">要抓取的源。</param>///<param name="targets">抓取结果。</param>///<returns></returns>boolGrab(IList<Keys> source,outstring[] targets)

一个抽象类:

publicabstractclassBaseGrabber : IGrabber

{#regionIGrabber成员。publicvirtualboolEnabled

{get;set;

}publicvirtualstringName

{get;set;

}publicvirtualuintMaxSourceLength

{get;set;

}publicvirtualuintMinSourceLength

{get;set;

}publicabstractboolGrab(stringsource,outstring[] targets);publicabstractboolGrab(IList<Keys> source,outstring[] targets);#endregion///<summary>///是否重构数据源(识别方向键、删除键等按键对输入字符的影响,返回真实的输入项)。///</summary>publicvirtualboolIsRestructured

{get;set;

}PRotectedBaseGrabber()

{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>publicvirtualstringRestructureSource(stringsource)

{returnsource;

}///<summary>///重构数据源(识别方向键、删除键等按键对输入字符的影响,返回真实的输入项)。///</summary>///<param name="source"></param>///<returns></returns>publicvirtualIList<Keys> RestructureSource(IList<Keys>source)

{intcount =source.Count;for(inti =0; i < count; i++)

{

Keys key=source[i];switch(key)

{caseKeys.Back:

source.RemoveAt(i);

source.RemoveAt(i-1);

i-=2;

count-=2;

break;

}

}returnsource;

}

终于搞明白了,还是上面那个例子说的是在。从接口到抽象类,在从抽象类到类,在类到对象。这就是面向对象。

下面是有关抽象类的一些基本感念:

抽象类与抽象方法由abstract修饰

抽象方法没有方法体

抽象类的派生类必须实现抽象方法体

抽象类只能作为基类,无法实例化。

重点就在于无法实例化,而且为了代码的清晰度,方便以后修改。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航