首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#新手提问,送分求解答!关于密封类有关问题

2012-04-05 
C#新手提问,送分求解答!关于密封类问题我学C# 测试下密封类的使用,写了如下代码,我并没有重写或继承Man这

C#新手提问,送分求解答!关于密封类问题
我学C# 测试下密封类的使用,写了如下代码,我并没有重写或继承Man这个类,为什么老提示我 “错误1因为“test.Man.Walk()”不是重写,所以无法将其密封C:\Users\Administrator\Documents\Visual Studio 2008\Projects\test02\test02\Program.cs20


C# code
using System;namespace test{    class Animal    {        public void Eat()        {            Console.WriteLine("Animal eating");        }    }    class Man : Animal    {        public new void Eat()   //继承后重写 Eat 使用new        {            Console.WriteLine("Man eating");        }        public sealed void Walk()  //封装Walk方法,继承后不能重写        {            Console.WriteLine("Man Walk !");        }    }    class Program    {        static void Main()        {            Man q = new Man();            q.Eat();        }    }}




[解决办法]
探讨

(1)首先你根本就不理解什么是重写,new 一个方法根本就不是重写。而是隐藏,本质上和你随便写一个方法是一样的,加上new只是因为和父类重名而已。这个方法和继承的类没有任何关系。

简单来说,隐藏方法虽然在教科书上反复被提到,但是实际上初学者根本不可能用到。也就是说,让初学者比较什么virtual/override 和 new,还不如根本不告诉初学者有后者。这种教学简直误人子弟。

(2……

热点排行