继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。

当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类

继承的思想实现了 属于(IS-A) 关系。例如,哺乳动物 属于(IS-A) 动物,狗 属于(IS-A) 哺乳动物,因此狗 属于(IS-A) 动物。

基类和派生类

一个类可以派生自多个类或接口,这意味着它可以从多个基类或接口继承数据和函数。

C# 中创建派生类的语法如下:

<acess-specifier> class <base_class>
{
...
}
class <derived_class> : <base_class>
{
...
}

基类的初始化

派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。您可以在成员初始化列表中进行父类的初始化。

C# 多重继承

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。

C# 不支持多重继承。但是,您可以使用接口来实现多重继承。

using System;
namespace InheritanceApplication
{
class Shape
{
public void setWidth(int w)
{
width = w;
}
public void setHeight(int h)
{
height = h;
}
protected int width;
protected int height;
} // 基类 PaintCost
public interface PaintCost
{
int getCost(int area); }
// 派生类
class Rectangle : Shape, PaintCost
{
public int getArea()
{
return (width * height);
}
public int getCost(int area)
{
return area * 70;
}
}
class RectangleTester
{
static void Main(string[] args)
{
Rectangle Rect = new Rectangle();
int area;
Rect.setWidth(5);
Rect.setHeight(7);
area = Rect.getArea();
// 打印对象的面积
Console.WriteLine("总面积: {0}", Rect.getArea());
Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area));
Console.ReadKey();
}
}
} 在继承类中调用基类中的non-static函数也需要创建新的类的对象。
												

最新文章

  1. weblogic忘记登陆密码
  2. Java反射与动态代理
  3. 数据库知识整理&lt;三&gt;
  4. [转载]C# ListView用法详解
  5. Visual studio 2015程序转Eclipse gun编译出现的问题总结
  6. BZOJ 1176([Balkan2007]Mokia-CDQ分治-分治询问)
  7. Maven依赖的是本地工程还是仓库jar包?
  8. java中websocket的应用
  9. Java设计模式---ChainOfResponsibility责任链模式
  10. C# 创建EXCEL图表并保存为图片
  11. 欢迎来到GitHub世界
  12. Oracle 11.2.0.4.0 Dataguard部署和日常维护(4)-Datauard Gap事件解决篇
  13. UI学习网站
  14. Elastix GOIP 网关配合
  15. typecho 调用评论最多热门文章
  16. Ubuntu 登陆界面无限循环问题 以及 root用户无法使用命令问题
  17. HihoCoder - 1781: Another Bubble Sort (冒泡排序&amp;逆序对)
  18. CodeForces 915D Almost Acyclic Graph
  19. ZetCode PyQt4 tutorial custom widget
  20. VS2013编译64位OpenSSL(附32位)

热门文章

  1. 【Java】java数据库连接中C3P、DBCP、Druid连接池的使用
  2. sql server 2008 express 安装的时提示“重启计算机失败&quot;
  3. sql随机查询数据语句(NewID(),Rnd,Rand(),random())
  4. python实现合并两个文件并打印输出
  5. python调用nmap探测局域网设备
  6. HeroKu PaaS模式
  7. JVM 内部原理(四)— 基本概念之 JVM 结构
  8. MQTT 学习记录
  9. IOC容器特性注入第六篇:利用MVC注入点,把容器启动
  10. 根据key删除Map集合中的key-value映射