接下来这篇文章,小编来介绍一下面向对象的三大特征之继承。
对象的继承代表了一种“is-a”的关系,如果两个对象A和B,可以描述为“B是A”,则表明B可以继承A。‘猫是哺乳动物’,说明了猫与哺乳动物之间是一种继承与被继承的关系。实际上,继承者可以理解为是对被继承者的特殊化,因为它除了具有被继承者的特性外,还具有自己独特的个性。
例如:父亲和儿子,两个人都是戏员,儿子唱戏的技巧都是从父亲中学习来的,但是他除了具备父亲教给他的那些技巧,还具备自己的特色和自己领悟的技巧或者是唱法。因而,在继承关系中,继承者可以完全替换被继承者,反之则不成立。所以,我们在描述继承的“is-a”关系时,是不能相互颠倒的。就例子而言,儿子可以替代父亲上台演戏,但是父亲却不能替代儿子上台演戏,因为它不具备儿子所特有的个性。
继承定义了类如何相互关联,共享特性。继承的工作方式是,定义父类(基类)和子类(派生类),其中子类继承父类的所有特性。子类不但继承了父类的所有特性,还可以定义新的特性。
特注:如果子类继承于父类
1. 子类拥有父类非private的属性和功能;
2.子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
3.子类还可以以自己的方式实现父类的功能(方法重写);
父类:动物Animal类
class Animal
{
protected string name="";
public Animal(string name)
{
this.name=name;
}
public Animal()
{
this.name="无名";
}
protected int shoutNum=3;
public int ShoutNum
{
get
{
return.shoutNum;
}
set
{
shoutNum=value;
}
}
}
子类:猫Cat类
class Cat:Animal
{
public Cat() : base()
{ }
public Cat(string name) : base(name)
{ }
public string Shout()
{
string result="";
for(int i=0;i<shoutNum;i++)
{
result+="喵";
}
return "我的名字叫"+name+""+result;
}
}
说了那么多,继承的优点是什么呢?
继承的优点:1.继承使得所有子类公共的部分都放在了父类,使得代码得到了共享,这就避免了重复;
2.继承可使得修改或扩展继承而来的实现都较为容易;
继承好处那么多,但是也不是多多使用继承就是好的,还需要慎用。
继承的缺点:1.父类变,则子类不得不变;
2.继承会破坏包装,父类实现细节暴露给子类;
继承显然是一种类与类之间强耦合的关系。