有关C#中子类override父类的方法的问题。 程序清单如下:

namespaceConsoleApplication2{publicclassBook{publicvirtualvoidSayHi(){Console.WriteLi... namespace ConsoleApplication2
{
public class Book
{
public virtual void SayHi()
{
Console.WriteLine("Hi, I'm book");
}
public virtual void Introduce()
{
Console.WriteLine("I'm book");
}

}

public class JavaBook : Book
{
public override void Introduce()
{
Console.WriteLine("I'm Java");
}

//注意,此方法没有override父类的方法
public override void SayHi()
{
Console.WriteLine("Hi, I'm Java");
}
}

public class test
{
public test()
{
JavaBook javaBook = new JavaBook();
Book book = new JavaBook();
javaBook.Introduce(); //将调用JavaBook中Introduce()
book.Introduce(); //将调用JavaBook中Introduce()

javaBook.SayHi(); //将调用JavaBook中SayHi()
book.SayHi(); //将调用Book中SayHi()
}

public static void Main()
{
test t = new test();
Console.ReadLine();
}
}
}
//为什么会说子类中的SayHi()方法覆盖了父类中的SayHi()方法,而Introduce()就没有呢?跪求教。
我说反了,应该是:“为什么会说子类中的SayHi()方法没有覆盖了父类中的SayHi()方法,而Introduce()就覆盖了”?
展开
 我来答
coffeegzl
2011-04-23 · 超过16用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:43.1万
展开全部
我运行过,父类方法都被override 了,
Book book = new JavaBook();这里你实际创建的是一个用父类类型接收的子类对象。和 JavaBook javaBook = new JavaBook();创建的对象一样都是子类对象。子类继承父类,子类又都override 了父类的虚方法
所以你调用子类对象的方法自然都重写了父类的方法。
如果你这样 Book book = new Book();创建父类对象,就不会重写父类方法。
你可以试试看。
百度网友6bccb12
2011-04-23 · 超过17用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:36.9万
展开全部
JavaBook继承了父类Book,而你又重写了父类的方法,当然会将原来父类的方法覆盖。
应在Book类加 abstract 进行抽象方法调用,将所有要实现的方法写在父类,子类只负责实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式