在c#中,一个类可以继承另外一个已有的类(密封类除外),被继承的类称为基类(或父类),继承的类称为派生类(或子类),子类将获得基类

除构造函数和析构函数以外的所有成员。此外,静态类是密封的,也不能被继承。

  例如,牛、羊、马等都是动物,但它们是不同种类的动物,除了具有动物的共同性外,它们还具有各自的特点,如不同的用途、不同的发声方式等。

我们可以把动物定义为牛、羊、马的父类,这样子类不但继承了基类除构造函数和析构函数以外的所有成员,还可以添加自己特有的成员。

  通过继承,程序可实现对父类代码的复用。因为子类可继承父类的所有成员,父类中定义的代码便不需要在子类中进行重复定义了。

  c#与c++不同,c#仅支持派生于一个基类,而c++则支持多重继承。但c#可以继承多个接口,如下演示继承的使用方法:

    public class Animal
{
private int _age; public int Age
{
get { return _age; }
set
{
//这里假设牛的寿命为10年。 if(value < ||value >)
{
throw (new ArgumentOutOfRangeException("AgeIntPropery", value, "年龄必须在0-10之间")); }
_age = value;
}
} //马(子类) public class Horse:Animal
{ } //羊 (子类)
public class Sheep:Animal
{ } }
        static void Main(string[] args)
{ Horse horse = new Horse();
horse.Age = ;
Console.WriteLine("马的年龄为:{0}", horse.Age); Sheep sheep = new Sheep();
sheep.Age = ;
Console.WriteLine("羊的年龄为:{0}", sheep.Age); Console.Read();
}

  如上,虽然各个子类并没有定义Age属性,但由于它们都继承自基类Animal,基类中又定义了Age属性,所以子类也就继承了父类中的Age。通过继承,避

免了在子类中重复定义Age,从而达到代码复用的目的。

  注:子类并不能对父类的私有成员进行直接访问,它只可对保护成员和公有成员进行访问。如果把上面代码中的Age属性定义为私有属性,Main函数就不能

对该属性进行赋值操作了。私有成员也会被子类继承,但子类不能直接访问私有成员,子类可以通过调用公有或保护方法来间接地对私有成员进行访问。

最新文章

  1. Java中,异常的处理及抛出
  2. 分享Kali Linux 2016.2第50周虚拟机
  3. Linux Mint安装jdk8
  4. 条款22 template method 模式
  5. Android群英传》读书笔记 (3) 第六章 Android绘图机制与处理技巧 + 第七章 Android动画机制与使用技巧
  6. 【USACO 3.2.4】饲料调配
  7. grails-MappingException: Could not determine Type
  8. 为什么cp很多小文件非常慢——对cp和rm命令的一些思考
  9. android4.0下如何判断手机是否有底部物理按键(menu物理按键)
  10. Redis构建分布式锁
  11. Centos 6.x 部署pptp VPN
  12. spring Bean类自动装载实现
  13. 论python3下“多态”与“继承”中坑
  14. mongodb3.0副本集搭建补充~~非admin数据库的用户权限
  15. 基于SVM的鸢尾花数据集分类实现[使用Matlab]
  16. Flask 学习目录
  17. BZOJ2783: [JLOI2012]树(树上前缀和+set)
  18. # 20175329 2018-2019-2 《Java程序设计》第二周学习总结
  19. PHP 中的魔法常数
  20. 【java高级编程】jdk自带事件模型编程接口

热门文章

  1. setTimeout与setInterval区别
  2. 07_gitee源码参考
  3. Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API
  4. PHP 创建 MySQL 表
  5. oracle 备份恢复之recover database的四条语句区别
  6. GridView修改含有DropDownList控件列的宽度
  7. Ubuntu 14.04 indigo 安装 cartographer 1.0.0
  8. Sentinel控制台前端开发环境搭建
  9. oracle数据库的存储原理
  10. 等待 Redis 应答