第十二章 继承

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
posted @ 2021-02-20 15:23  葡式蛋挞  阅读(7)  评论(0)    收藏  举报