c#如何重写类

多年前,我编写了一个类命名空间是pm有一个类是A现在我没有源代码了只有编译好的dll我现在想在这个类中添加一个方法,要求不改变命名空间,我的做法是引用这个dll,然后na... 多年前,我编写了一个类 命名空间是 pm 有一个类是A 现在我没有源代码了 只有编译好的dll 我现在想在这个类中添加一个方法,要求不改变命名空间,我的做法是引用这个dll, 然后
namespace pm
{
public class A
{
新添加方法 结果编译不成功 提示错误 ,为什么
展开
 我来答
安全管理人12345gf
2016-01-07 · TA获得超过5523个赞
知道大有可为答主
回答量:5473
采纳率:62%
帮助的人:1209万
展开全部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{

    #region//重写父类同名方法
    class MyClass
    {
        public void ShowMessage()
        { Console.WriteLine("我是父类"); }
    }

    class MyClass1 : MyClass
    {
       new public void ShowMessage() // 这里就发生了重写,也可以说是隐藏了父类的方法. 这样做了之后就不能再使用父类的同名方法了.
        {
            Console.WriteLine("我是子类");
        }
    }
    #endregion

    #region 覆盖父类的同名方法.
    class My
    {
        public virtual void SHowMessage()  //使用virtual关键字表示这个方法会被覆盖.
        { Console.WriteLine("我是父类,我将要被覆盖."); }
    }

    class My1 : My
    {
        public override void SHowMessage()  // 使用override 关键字来表示覆盖父类的同名方法.  覆盖和重写不同的是覆盖可以再调用父类的同名方法, 加一个base关键字就可以了.
        { 
            Console.WriteLine("我是子类,我覆盖了父类的同名方法");
            base.SHowMessage();  // 这里就调用了父类的SHowMessage方法.
        }
    }
    #endregion

    class Program
    {
        static void Main(string[] args)
        {
            MyClass1 My = new MyClass1();
            My1 my = new My1();
            My.ShowMessage(); // 输出我是子类
            my.SHowMessage(); // 输出我是子类,我覆盖了父类的同名方法  and 我是父类,我将要被覆盖
        }
    }
}
wangpaishi
推荐于2017-11-25 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:757万
展开全部
据我所知,重写不了类,只能继承,重写方法,重写方法但是还是可以调用父类的方法的

父类没标明 virtual / abstract 之类关键字的话,就只能用new了,否则可以 override,类名也不能用

public new void Fun()
{
base.Fun()
}

或者你试试还能不能写部分类 (忘记那个关键字了,经常不用 partial?)
public class part*** A
{
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狮是搞完泪18
2013-02-18 · TA获得超过270个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:258万
展开全部
你的FrameWork是什么版本的?
如果你的版本是3.5以前的只能通过继承的方式。
如果你的版本是3.5或者更新的版本,可以通过给类添加静态方法的方式去扩展你的类
追问
如何写  谢谢 !!!
追答
public static class ExpandA
{
//A类的扩展方法 NewMethod
public static void NewMethod(this A a)
{
//Dosomething();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-02
展开全部
重写 继承 重构
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式