首页
技术库|站长工具|技术手册|字体库|知识点词汇表| 联系我们|
打开本页的html静态页面
 

主菜单

文章分类

.: .Net技术 .: C#教程 .: c#中virtual与override举例讲解

  • 全文内容
  • 发表评论
  • 文章点评
  • 文章附件
  • Email文章
  • 打印文章

c#中virtual与override举例讲解

点击次数:624 创建日期:10-29-2007 录入:cn-web.com 字体:[ ] 点评:


在C#中,如果声明一个方法的时候用了virtual这个关键字,那么,在派生类中,就可以使用override或者new关键字来重写(弃用)它或是隐藏(忽略)它.如果你在父类中用了virtual这个关键字,而在其派生类中又没有用override或new关键字,而直接引用一个同名方法的话,编译器将会报警告错误,并将以new方式,即忽略派生类中的方法的方式来运行。
 
废话少说,还是以代码说话:
 
/// <summary>
/// 抽象类书
/// </summary>
public abstract class Book
{
    /// <summary>
    /// 书名
    /// </summary>
    public string bookName;
    /// <summary>
    /// 虚方法,获取书名
    /// </summary>
    public virtual string getBookName()
    {
        return "这本书名是:"+bookName;
    }
    /// <summary>
    /// 虚方法,获取书出版社
    /// </summary>
    public virtual string getBookCome()
    {
        return "cn-web.com出版<br>";
    }
}
/// <summary>
/// 书的派生类
/// </summary>
public class NetBook : Book
{
    /// <summary>
    /// 重写虚方法override
    /// </summary>
    public override string getBookName()
    {
        return bookName;
    }
    /// <summary>
    /// 不用override,可以不写new,但会引起警告错误,编译时系统会自动为它加上new关键字
    /// </summary>
    public string getBookCome()//正规应当为:public new string getBookCome(),在这里省略了new关键字
    {
        return "www.cn-web.com出版<br>";
    }
}
 
调用:
 public class test
    {
        public test()
        {
            NetBook myNetBook = new NetBook();
        myNetBook.bookName = "asp.net开发案例<br>";
        Response.Write(myNetBook.getBookName());
        Response.Write(myNetBook.getBookCome());

 

        Book myBook = new NetBook();
        myBook.bookName = "asp.net基础开发<br>";
        Response.Write(myBook.getBookName());
        Response.Write(myBook.getBookCome());

        }

        public static void Main()
        {
            test t = new test();
        }
    }


请文明参与讨论,禁止漫骂攻击。
评论总数:0 [ 查看全部 ] 网友评论
此文章还没有任何评论!
(+5分)
(+4分)
(+3分)
(+2分)
(+1分)
此内容无附件
网站地图 - 知识词汇 - 全文检索 - 广告服务 - 帮助中心 - 联系我们
.:www.cn-web.com
网站技术开发联盟之WEB开发技术知识库
联系人:老韩(QQ:5679551)
晋ICP备07003487号