public class Animal
{
    private string _name;//动物名称
    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
    public virtual string Burrow()//定义动物行为
    {
        return "动物行为:";
    }
}
 

public class Mouse : Animal
{
    public Mouse()
    {
        base.Name = "老鼠";
    }
    public override string Burrow()
    {
        return base.Burrow() + "老鼠的儿子会打洞!";
    }
}

 看这一块代码:

public override string Burrow()
    {
        return base.Burrow() + "老鼠的儿子会打洞!";
    }
要使用override重写关键字,父类对应的过程应有virtual关键字描述,代表该过程重新编写(不会执行对应的父类过程),使用base关键字可以调用父类公开的所有方法、属性、字段等

public class Books
{
    //字段修饰符为public
    public string bookName;
    public string ISBN;
    public Books(string bName, string bISBN)
    {
        this.bookName = bName;
        this.ISBN = bISBN;
    }
}
public class Sale : Books//定义派生类
{
    public double bookSell;
    public Sale(string bName, string bISBN, double sell)//子类构造函数
        : base(bName, bISBN)
    {
        bookSell = sell;
    }
}

再看这一块代码 子类 的构造函数 最先执行了 父类的构造方法,去初始化了字段值,这是完全正确的,但是有时我们并不需要去初始化这些值,而父类的构造方法却要求一定要执行,这种情况我们可以重载父类的构造方法,在父类加入 public Books(){}这一构造方法就可以满足我们的要求啦!

子类构造方法修改如下:

    public Sale(string bName, string bISBN, double sell)//子类构造函数
        //: base() //也可以取消注释,做用相同
    {
        bookSell = sell;
}
posted on 2014-08-04 09:30  Values  阅读(564)  评论(0编辑  收藏  举报