public class BaseClass
{
public virtual void Display()
{
Console.WriteLine("I am Base Class");
}
public void BaseClassMethod()
{
Console.WriteLine("I am Base Class Method");
}
}
public class DerivedClass : BaseClass
{
public override void Display()
{
Console.WriteLine("I am Derived Class");
}
public void DerivedClassMethod()
{
Console.WriteLine("I am Derived Class Method");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
bc.Display();
bc.BaseClassMethod();
Console.WriteLine("--------------");
DerivedClass dc = new DerivedClass();
dc.Display();
dc.BaseClassMethod();
dc.DerivedClassMethod();
Console.WriteLine("--------------");
BaseClass bc2 = new DerivedClass();
bc2.Display();
bc2.BaseClassMethod();
//bc2.DerivedClass(); --> I can't reach b2.DerivedClass() method
Console.ReadLine();
}
}
大家好。我试图清除我为什么和我想在哪里创建和使用基类引用的派生类对象。我知道如何虚拟作品。我知道派生类是一个基类,我可以覆盖虚拟方法。我可以在基类中访问非虚拟方法。但我想知道哪里可以,为什么我想要使用这种风格的对象创建。就像我在示例代码的最后部分一样;为什么我要创建一个具有基类引用的对象?
BaseClass bc2 = new DerivedClass();
我无法到达派生类方法,所以我不能使用派生类方法。但由于新的DerivedClass,它仍然是派生类。如果我使用正常的DerivedClass d = new DerivedClass();样式,我可以使用这两种类的方法。我只是找不到任何理由和情况,我想用这种风格。我会很高兴,如果有人告诉我在哪种情况下我必须使用基类引用的派生类对象,所以我可以理解这种风格存在于语言中。我想知道为什么,我不是问为什么这不起作用或类似的东西。只想知道情况。谢谢。
你有没有对'Class Inheritance'进行任何阅读/研究?也许你可以考虑在'OOP'上做一个'C#MSDN Google Search'并且了解谁在哪里以及为什么 – MethodMan
好,当你只有一个基类时,以及一个派生类,你不会去找到很多价值。这是当你有多个具有通用功能的类时,而且还有不同的实现路径,你将从继承中受益。 – Jonesopolis
简介:它向读者表明,该对象不会被用于比基类功能集所提供的任何更多的功能。声明派生类型将是“逻辑噪声”。这不是让事情变得比需要更复杂。使用适合这项工作的工具。 –