【C#编程】课本关于 sealed 访问修饰符的概念纠错,

       电子专业的大二狗最近在期末复习,复习到类的继承与多态性这一章,发现课本( Visual C#.NET 框架程序设计)中关于sealed修饰符的概念有点小错误,在此更正。自己坑自己也愿了,被教材坑了就真的冤大头了。

       让我们翻到课本P136,从上到下第三句话“密封成员不能被派生类继承,也不能被隐藏”,既然这么说,我就试试看吧,附代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class X  //默认访问修饰符是私有的
    {
        protected virtual void F()
        {
            Console.WriteLine("X.F");
        }
        protected  virtual void F2()
        {
            Console.WriteLine("X.F2");
        }
    }
    class Y : X
    {
       sealed protected override void F()
        {
            Console.WriteLine("Y.F");
        }

       protected override void F2()
        {
            Console.WriteLine("Y.F2");
        }
    }
     class Z:Y
    {
         protected new void F()
         {
             Console.WriteLine("隐藏基类密封成员");    //我隐藏了Y的密封成员F
         }
         public void display()
         {
             F();                                    //我又继承了Y的密封成员F,而且还能调用
         }
    }
    public class Program
    {
        static void Main(string[] args)
        {
            Z z1 = new Z();
            z1.display();
         
        }
    }
}

综上,“密封成员不能被派生类继承,也不能被隐藏”这句话是错的,划掉!

接下来是我对sealed这一修饰符的总结

①sealed用于类时,该类成为密封类,表示该类不能被其它类继承。

②sealed用于类中方法或属性时,表示该方法或属性不能被派生类重写。但能继承!能隐藏!能调用!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值