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"); }
public class test { public test() { JavaBook javaBook = new JavaBook(); Book book = new JavaBook(); javaBook.Introduce(); //将调用JavaBook中Introduce() book.Introduce(); //将调用JavaBook中Introduce()
public static void Main() { test t = new test(); Console.ReadLine(); } } } //为什么会说子类中的SayHi()方法覆盖了父类中的SayHi()方法,而Introduce()就没有呢?跪求教。 我说反了,应该是:“为什么会说子类中的SayHi()方法没有覆盖了父类中的SayHi()方法,而Introduce()就覆盖了”?
最新回答
真心可是半斤ぴ
2026-10-28 08:10:37
我运行过,父类方法都被override 了, Book book = new JavaBook();这里你实际创建的是一个用父类闹旁类型接基弯首收的子类对象。和 JavaBook javaBook = new JavaBook();创建的对象一样都是子类对象。子类继承父类,子类又都override 了父类的虚方法 所以你调用子类对象的方法自然都重写了父类的方法。 如搏数果你这样 Book book = new Book();创建父类对象,就不会重写父类方法。 你可以试试看。