有时候我们需要表达一种抽象的东西,它是一些东西的概括,但我们又不能真正的看到它成为一个实体在我们眼前出现,为此面向对象的编程语言便有了抽象类的概念。C#作为一个面向对象的语言,必然也会引入抽象类这一概念。接口和抽象类使您可以创建组件交互的定义。通过接口,可以指定组件必须实现的方法,但不实际指定如何实现方法。抽象类使您可以创建行为的定义,同时提供用于继承类的一些公共实现。对于在组件中实现多态行为,接口和抽象类都是很有用的工具。

一个抽象类必须为类的基本类列表中列出的接口的所有成员提供实现程序。但是,一个抽象类被允许把接口方法映射到抽象方法中。例如
 
interface IMethods {
 void F();
 void G();
}
abstract class C: IMethods
{
 public abstract void F();
 public abstract void G();
}

这里, IMethods 的实现函数把F和G映射到抽象方法中,它们必须在从C派生的非抽象类中被覆盖。

注意显式接口成员实现函数不能是抽象的,但是显式接口成员实现函数当然可以调用抽象方法。例如
  
interface IMethods
{
 void F();
 void G();
}
abstract class C: IMethods
{
 void IMethods.F() { FF(); }
 void IMethods.G() { GG(); }
 protected abstract void FF();
 protected abstract void GG();
}

这里,从C派生的非抽象类要覆盖FF 和 GG, 因此提供了IMethods的实际实现程序。

最新文章

  1. 红米3 SM71.1(android-7.1.1_r6)更新发布20161229年末增强版
  2. chrome(谷歌浏览器)老是提示此文件可能损害计算机
  3. 解决Idea创建maven-archetype-webapp项目无java目录的问题
  4. ASP.NET MVC 获取当前访问域名
  5. loj 1013(LCS+记忆化搜索)
  6. BZOJ1172 : [Balkan2007]Dream
  7. linux power button
  8. linq 日常关键字使用
  9. python中的模块,以及包的导入的总结
  10. CentOS环境下tomcat启动超级慢的解决方案
  11. Beta阶段敏捷冲刺报告-DAY3
  12. ThinkPHP 5.0/5.1 自定义404界面的配置
  13. VS2017无法进入安装界面问题的解决方法
  14. spring 单元测试方法及其错误整理
  15. [转]sqlplus /nolog 出错解决 SP2-0667: Message file sp1<lang>.msb not found SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
  16. 34对MyBatis的博客的整理心得
  17. (转)IBM mq基本使用
  18. 十三、K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
  19. [skill][http] http管道化连接
  20. spriteJS

热门文章

  1. jQuery树形控件zTree使用
  2. FileChannel与ByteBuffer的使用示例
  3. spring boot之 Bean的初始化和销毁(4)
  4. cgkib动态代理详解-不依赖接口,速度快
  5. .net中Response.End() 和Response.Redirect("http://dotnet.aspx.cc");
  6. 360或其他双核浏览器下在兼容模式用chrome内核渲染的方法
  7. spring-boot 配置jsp
  8. HTML5&CSS挑战
  9. visual studio2010中C#生成的,ArcGIS二次开发的basetool的dll,注册为COM组件tlb文件,并在arcmap中加载使用
  10. C++ int转string / string转int