继承
对象的继承代表了一种‘is-a’的关系,如果两个对象A和B,可以描述为‘B’是‘A’,则表明B可以继承A。
继承者还可以理解为是对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己独有的个性。
继承定义了类相互关联,共享特性。继承的工作方式是,定义父类和子类,或叫基类和派生类,其中子类继承父类中所有的特性。子类不但继承了父类的所有特性,还可以定义新的特性。
如果子类继承于父类,
第一、子类拥有父类非private的属性和功能;
第二、子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
第三、子类还可以以自己的方式实现父类的功能(方法重写)。
protected表示继承时子类可以对基类有完全访问权。
class Animal
{
protected string name = "";
public Animal(string name)
{
this.name = name;
}
public Animal()
{
this.name = "无T名?";
}
protected int shoutNum = 3;
public int ShoutNum
{
get { return shoutNum; }
set { shoutNum = value; }
}
}
子类从它的父类中继承的成员有方法、属性、域、事件、索引指示器,但对于构造方法,有一些特殊,它不能被继承,只能被调用。对于调用父类的成员,可以用base关键字。
class Dog : Animal
{
public Dog()
: base()
{ }
public Dog(string name)
: base(name)
{ }
public override string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
{
result += "汪ª? ";
}
return "我¨°的Ì?名?字Á?叫D" + name + " " + result;
}
}
不用继承的话,如果需要修改功能,就必须在所有重复的方法中修改,代码越多,出错的可能性就越大,而继承的优点是,继承使得所有子类公共的部分都放在了父类,使得代码得到了共享,这就避免了重复,另外,继承可使得修改或扩展继承而来的实现都较为容易。
继承是有缺点的,那就是父类变,则子类不得不变。
继承显然是一种类与类之间强耦合的关系。
当两个类之间具备‘is-a’的关系时,就可以考虑用继承了。