C# 之 继承
继承
继承是OOP最重要的特性之中的一个。不论什么类都能够从还有一个类中继承,这就是说,这个类拥有它继承的类的全部成员。
在OOP中,被继承的类称为父类。
在C#中的对象仅能直接派生于一个基类。
对象的继承代表了一种“is-a”的关系。假设两个对象A和B。能够描写叙述为“B是A”,则表明B能够继承A。
“猫是哺乳动物”。就说明了猫与哺乳动物之间继承与被继承的关系。实际上,继承者还能够理解为是被继承者的特殊化,由于它除了具备被继承者的特殊性外,还具备自己独有的个性。比如,猫就可能拥有抓老鼠、爬树等“哺乳动物”对象所不具备的属性。
假设子类继承与父类,第一、子类拥有父类非private的属性和功能;第二、子类具有自己的属性和功能,即子类能够扩展父类没有的属性和功能;第三、子类还能够以自己的方式实现父类的功能(方法重写)。
比如:考虑一个农场家禽家畜的类。这个类叫做Animal,拥有EatFood()和Breed()方法,我们能够创建一个子类Cow。支持全部这些方法。它也有自己的方法。如Moo()和SupplyMilk()。还能够创建还有一个子类Chicken,该类有Cluck()和LayEgg()
class Program
{
static void Main(string[] args)
{
Cow cow = new Cow("牛牛");
cow.EatFood();
cow.Breed();
cow.Moo();
cow.SupplyMilk(); Console.WriteLine(); Chicken chicken = new Chicken("咕咕");
chicken.EatFood();
chicken.Breed();
chicken.Cluck();
chicken.LayEgg();
}
}
//动物类
class Animal
{
protected string name = "";
public Animal(string name)
{
this.name = name;
}
public void EatFood() //吃东西
{
Console.WriteLine(this.name + "会吃东西");
}
public void Breed() //生殖后代
{
Console.WriteLine( this.name + "能生殖后代");
}
}
class Cow:Animal
{
public Cow(string name): base(name)
{ }
public void Moo() //牛叫
{
Console.WriteLine( "我的名字叫" + name + " 哞");
}
public void SupplyMilk() //提供牛奶
{
Console.WriteLine( "我的名字叫" + name + " 我能提供牛奶");
}
}
class Chicken : Animal
{
public Chicken(string name):base(name)
{ }
public void Cluck() //鸡叫
{
Console.WriteLine("我的名字叫" + name + " 咯咯咯");
}
public void LayEgg() //下蛋
{
Console.WriteLine("我的名字叫" + name + " 我能下蛋");
}
}
继承的长处:继承使得全部子类公共的部分都放在了父类,使得代码得到了共享。这就避免了反复,另外,继承可使得改动或扩展继承而来的实现都较为easy。
继承的缺点:假设父类改变,那么子类就不得不变。
继承会破坏包装,父类实现细节暴露给子类。增大了两个类之间的耦合性。
C# 之 继承的更多相关文章
- javaScript的原型继承与多态性
1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...
- JavaScript的继承实现方式
1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...
- javascript中的继承与深度拷贝
前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...
- 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- JS继承类相关试题
题目一: //有关于原型继承的代码如下:function Person(name) { this.name = name;}Person.prototype = { getName : f ...
- JS继承之寄生类继承
原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...
- JS继承之借用构造函数继承和组合继承
根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...
- JS继承之原型继承
许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...
- 深入浅出JavaScript之原型链&继承
Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...
- 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型
前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.
随机推荐
- 使用ShareSDK实现第三方授权登录、分享以及获取用户资料效果,项目中包含:源码+效果图+项目结构图
[Android应用开发详解]第01期:第三方授权认证(一)实现第三方授权登录.分享以及获取用户资料 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折, ...
- Getting Started with MongoDB (C# Edition)
https://docs.mongodb.com/getting-started/csharp/ 概览 Welcome to the Getting Started with MongoDB guid ...
- 面向对象(OOP)五大基本原则
书单 <Object-Oriented Analysis & Design with Application>:Grady Booch, 下载地址:object-oriented- ...
- php 扩展模块安装过程
安装php模块,不需要重新编译php,可以动态扩展php模块. 以安装msgpack模块为例:(此处php5.6是编译安装的) 1.下载msgpack模块源码包 # wget http://pecl. ...
- Centos安装masscan
1.yum install git gcc make libpcap-devel2.git clone https://github.com/robertdavidgraham/masscan3.cd ...
- bzoj1270 BeijingWc2008 雷涛的小猫 DP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1270 比较水的一道dp f1[i]为高度为i的时候的最大值 f2[i]为当前高度在第i棵树 ...
- ip代理池的爬虫编写、验证和维护
打算法比赛有点累,比赛之余写点小项目来提升一下工程能力.顺便陶冶一下情操 本来是想买一个服务器写个博客或者是弄个什么FQ的东西 最后刷知乎看到有一个很有意思的项目,就是维护一个「高可用低延迟的高匿IP ...
- Python对象的循环引用问题
目录 Python对象循环引用 循环引用垃圾回收算法 容器对象 生成容器对象 追踪容器对象 结束追踪容器对象 分代容器对象链表 何时执行循环引用垃圾回收 循环引用的垃圾回收 循环引用中的终结器 pyt ...
- Object-C,NumberDemo和StringDemo
晚上抽空写了2个Demo.第1个是演示字符串,第2个是演示数组和可变数组.只用到了几个基本的方法和基本语句. NSString字符串对象,NSNumber和NSMutableNumber,if语句,N ...
- 查看mysql正在执行的SQL语句,使用profile分析SQL执行状态
http://qq85609655.iteye.com/blog/2113960 1)我们先通过status命令查看Mysql运行状态 mysql> status; -------------- ...