c#如何重写类
多年前,我编写了一个类命名空间是pm有一个类是A现在我没有源代码了只有编译好的dll我现在想在这个类中添加一个方法,要求不改变命名空间,我的做法是引用这个dll,然后na...
多年前,我编写了一个类 命名空间是 pm 有一个类是A 现在我没有源代码了 只有编译好的dll 我现在想在这个类中添加一个方法,要求不改变命名空间,我的做法是引用这个dll, 然后
namespace pm
{
public class A
{
新添加方法 结果编译不成功 提示错误 ,为什么 展开
namespace pm
{
public class A
{
新添加方法 结果编译不成功 提示错误 ,为什么 展开
4个回答
展开全部
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 我是父类,我将要被覆盖
}
}
}
展开全部
据我所知,重写不了类,只能继承,重写方法,重写方法但是还是可以调用父类的方法的
父类没标明 virtual / abstract 之类关键字的话,就只能用new了,否则可以 override,类名也不能用
public new void Fun()
{
base.Fun()
}
或者你试试还能不能写部分类 (忘记那个关键字了,经常不用 partial?)
public class part*** A
{
父类没标明 virtual / abstract 之类关键字的话,就只能用new了,否则可以 override,类名也不能用
public new void Fun()
{
base.Fun()
}
或者你试试还能不能写部分类 (忘记那个关键字了,经常不用 partial?)
public class part*** A
{
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的FrameWork是什么版本的?
如果你的版本是3.5以前的只能通过继承的方式。
如果你的版本是3.5或者更新的版本,可以通过给类添加静态方法的方式去扩展你的类
如果你的版本是3.5以前的只能通过继承的方式。
如果你的版本是3.5或者更新的版本,可以通过给类添加静态方法的方式去扩展你的类
追问
如何写 谢谢 !!!
追答
public static class ExpandA
{
//A类的扩展方法 NewMethod
public static void NewMethod(this A a)
{
//Dosomething();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-02
展开全部
重写 继承 重构
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询