lifengguo 's Blog

『 逆水行舟用力撑,一篙松劲退千寻!』

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  16 随笔 :: 1 文章 :: 14 评论 :: 1 引用
    public abstract class People   //abstract 说明类People是一个抽象类,不能被实例的
    {
        public People()
        {
        }

        public void Work()
        {
            MessageBox.Show("开始工作!");
        }

        public virtual void GetOffWork()   //虚函数,说明此方法可以被子类覆盖(override)
        {
            MessageBox.Show("下班啦!");
        }
    }

    public class Manage:People   //继承Popele类
    {
        public Manage()
        {
        }

        new public void Work()   //因为基类已经实现了Work方法,而在子类中又实现了Work方法,所以                                 //编译器会报警,在前面加上 new(隐藏基类方法),是将警报关闭。
        {
            base.Work();   //调节基类Popele的方法。显示“开始工作”
            //MessageBox.Show("管理员开始工作罗!");
        }

        public override void GetOffWork()      //覆盖基类的方法
        {
            MessageBox.Show("管理员下班啦");
        }
    }

    public class Employee():People
    {
       public Employee()
       {}

        new public void GetOffWork()      //virtual方法仍然可以 new
        {
            MessageBox.Show("职员下班啦!");
        }

    }

以上应该应该几点:
1、如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。
2、如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。
3、如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!
3、调用父类方法:base.方法名()
4、abstract类是一个抽象类,不能被实例化

posted on 2007-06-13 13:02 黎锋果(peace) 阅读(114) 评论(1)  编辑 收藏 网摘 所属分类: C#

评论

#1楼  2007-09-27 18:01 马可香蕉      
呵呵,保存
  回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-06-14 14:02 编辑过
Google站内搜索
找找看



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: