第十二章 继承
1.继承
将不同类的通用功能提取到一个单独的类中,从而减少大量的重复性工作。
class Drink
{
private int net;
}
class Cola : Drink // 一个子类只能继承自一个父类。Cola称为派生类,Drink称为基类。
{
private int net;
public Cola(int i) : base() // base关键字调用基类构造器
{
this.net = i;
}
public void Can()
{
.....
}
}
// 1.继承只适用于类,不适用于结构。
// 2.所有结构都派生自名为System.ValueType的抽象类。(和第一点感觉矛盾。。。)
// 3.System.Object类是所有类的根。
Cola c = new Cola(300);
Drink d = c;
d.Can(); // 调用非法,父类不能访问子类特有的成员。
Cola coldCola = d as Cola; // 变量c, d引用同一个Cola对象,可以转型
2.虚方法 虚方法用virtual关键字标记。虚方法是一种简单实现,它故意设计成要被重写。重写的方法用override关键字标记。
class Season
{
public virtual string ToString()
{
return "Seasons in sun now";
}
}
class Fall : Season
{
public override string ToString()
{
return "Season in fall now";
}
}
class Winter : Season
{
public override string ToString()
{
return "Season in winter now";
}
}
class Spring : Season
{
......
}
// 1.虚方法不能声明为私有。
// 2.虚方法和重写方法必须签名一致。
// 3.只能重写虚方法。
Season s;
Fall fall = new Fall();
Winter winter = new Winter();
Spring spring = new Spring();
// 多态:同一个方法,在不同时期表现出不同状态。
s = fall;
Console.WriteLine(s.ToString()); // 输出:Season in fall now
s = winter;
Console.WriteLine(s.ToString()); // 输出:Season in winter now
s = spring;
Console.WriteLine(s.ToString()); // 输出:Seasons in sun now

浙公网安备 33010602011771号