博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【c# 学习笔记】继承
阅读量:5056 次
发布时间:2019-06-12

本文共 1522 字,大约阅读时间需要 5 分钟。

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

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

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

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

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

 

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

public class Animal    {        private int _age;        public int Age        {            get { return _age; }            set            {                //这里假设牛的寿命为10年。                if(value <0 ||value >10)                {                    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 = 2;            Console.WriteLine("马的年龄为:{0}", horse.Age);            Sheep sheep = new Sheep();            sheep.Age = 1;            Console.WriteLine("羊的年龄为:{0}", sheep.Age);            Console.Read();        }

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

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

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

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

 

转载于:https://www.cnblogs.com/xiaoyehack/p/9209450.html

你可能感兴趣的文章
Vue-详解设置路由导航的两种方法
查看>>
一个mysql主从复制的配置案例
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
dvwa网络渗透测试环境的搭建
查看>>
Win8 安装VS2012 和 Sql Server失败问题
查看>>
过点(2,4)作一直线在第一象限与两轴围成三角形,问三角形面积的最小值?...
查看>>
java aes CBC的填充方式发现
查看>>
使用ionic cordova build android --release --prod命令打包报有如下错误及解决方法
查看>>
BZOJ 2338 HNOI2011 数矩形 计算几何
查看>>
关于页面<!DOCTYPE>声明
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
C++标准库vector使用(更新中...)
查看>>
cocos2d-x 2.2.6 之 .xml文件数据读取
查看>>
枚举的使用
查看>>
BZOJ 1531 二进制优化多重背包
查看>>
BZOJ 2324 (有上下界的)费用流
查看>>
python3基础06(随机数的使用)
查看>>
Zookeeper系列(二)特征及应用场景
查看>>
【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试
查看>>
Spring Boot使用Druid和监控配置
查看>>