栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C# 方法屏蔽,方法重写,方法密闭

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# 方法屏蔽,方法重写,方法密闭

原文链接来自:面试一点通:http://www.msedt.com/infoflow/details/1094
1. 方法屏蔽
class Pet
    {
        public void Run()
        {
            Console.WriteLine("pet walk");
        }
    }
    
    class Dog : Pet
    {
        new public void Run()
        {
            Console.WriteLine("dog walk");
        }
    }

以如下方式调用Run方法

Dog dog = new Dog(); 
dog.Run();

得到的结果是dog walk。

以如下方式调用Run方法

Pet dog = new Dog(); 
dog.Run();

得到的结果却是pet walk。

2. 方法重写
class Pet
    {
        virtual public void Run()
        {
            Console.WriteLine("pet walk");
        }
    }
    
    class Dog : Pet
    {
        override public void Run()
        {
            Console.WriteLine("dog walk");
        }
    }

以如下方式调用Run方法

Dog dog = new Dog(); 
dog.Run();

得到的结果是dog walk。

以如下方式调用Run方法

Pet dog = new Dog(); 
dog.Run();

得到的结果还是dog walk。

3. 方法密闭
  1. 基类中的方法密闭

如果一个基类不希望子类对它的某个非抽象方法进行重写,只要在这个方法前面不添加virtual 就可以。因为派生类要重写基类的方法,这个方法必须是 virtual | override | abstract。由于是非抽象方法,排除 abstract。由于是基类中的方法,排除 override。因此,只要基类中的非抽象方法不添加 virtual,派生类就无法对其进行重写。

  1. 派生类中的方法密闭

只需要在 被重写的方法前添加 sealed 关键字。注意,在密闭某个派生类方法上 sealed 只能和 override 结合使用,不能单独使用。也就是说只能对重写的派生方法进行密封。

class Pet
    {
        virtual public void Run()
        {
            Console.WriteLine("pet walk");
        }
    }
    
    class Dog : Pet
    {
        sealed override public void Run()
        {
            Console.WriteLine("dog walk");
        }
    }

度一切苦厄,破一切迷惑。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955685.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号