C#中继承的问题

liang2819561 2011-02-21 03:54:54
遇到这样一个情况,我把VB.NET的代码转换成C#代码过程中,
假设父类A继承一个类I,然后子类B继承A,问题就是在VB.NET中,子类B可以重写类I中的方法,但是C#中子类B不能重写类I中的方法。请问该怎么办?
...全文
197 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxmiiiiiiiiii 2011-02-22
  • 打赏
  • 举报
回复
怎么可能不能呢?
yuanmeixiang 2011-02-22
  • 打赏
  • 举报
回复
能的但是父类必须写成虚方法或者用子类把父类覆盖掉
kindliang 2011-02-21
  • 打赏
  • 举报
回复
1.I类中声明为virtual,子类用override重写
2.注意修饰符是否正确
laomengzi 2011-02-21
  • 打赏
  • 举报
回复
基类中将需要重写的方法前加virtual ,子类override重写该方法,就ok了
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liang2819561 的回复:]

能具体说下吗?这和访问修饰符有什么关系?
[/Quote]

在vb.net中,Virtual是默认值,不需要写。而在c#中不是,必须写。
wuyq11 2011-02-21
  • 打赏
  • 举报
回复
接口
Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名
Class Program
Private Shared Sub Main(args As String())
Dim ct1 As contact = New class2()
Dim ct2 As contact = New class2()
ct1.prinf()
ct2.prinf()
End Sub
End Class
Public MustInherit Class contact
Public Overridable Sub prinf()
Console.WriteLine("这是虚方法")
End Sub
End Class
Public Class class1
Inherits contact
Public Overrides Sub prinf()
Console.WriteLine("这是新的方法")
End Sub
End Class
Public Class class2
Inherits contact
Public Shadows Sub prinf()
Console.WriteLine("这是另一个新的方法")
End Sub
End Class
tellxp 2011-02-21
  • 打赏
  • 举报
回复
声明为virtual不行么?
netstudy0105 2011-02-21
  • 打赏
  • 举报
回复
通过接口处理,c#类只支持单一继承
  • 打赏
  • 举报
回复
检查那几个类的访问修饰符,没有的默认为private
  • 打赏
  • 举报
回复
public class D
{
public virtual void DoWork(int i)
{
// Original implementation.
}
}

public abstract class E : D
{
public abstract override void DoWork(int i);
}

public class F : E
{
public override void DoWork(int i)
{
// New implementation.
}
}

  • 打赏
  • 举报
回复
虚方法
liang2819561 2011-02-21
  • 打赏
  • 举报
回复
能具体说下吗?这和访问修饰符有什么关系?
xs8577 2011-02-21
  • 打赏
  • 举报
回复
访问修饰符!

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧