class A
{
public A()
{ Console.WriteLine("a"); }
public virtual void Hello()
{ Console.WriteLine("HA"); }
public void M()
{ Console.WriteLine("M"); }
}
class B : A
{
public B()
{ Console.WriteLine("b"); }
public override void Hello()
{
Console.WriteLine("HB");
} }
class C : B
{
public C()
{ Console.WriteLine("c"); }
public override void Hello()
{
Console.WriteLine("HC");
}
}
static void Main(string[] args)
{ B b = new C();
b.Hello();
b.M(); Console.ReadLine(); }
这个主函数中不是没有调用构造函数吗?为什么会输出A,B,C
{
public A()
{ Console.WriteLine("a"); }
public virtual void Hello()
{ Console.WriteLine("HA"); }
public void M()
{ Console.WriteLine("M"); }
}
class B : A
{
public B()
{ Console.WriteLine("b"); }
public override void Hello()
{
Console.WriteLine("HB");
} }
class C : B
{
public C()
{ Console.WriteLine("c"); }
public override void Hello()
{
Console.WriteLine("HC");
}
}
static void Main(string[] args)
{ B b = new C();
b.Hello();
b.M(); Console.ReadLine(); }
这个主函数中不是没有调用构造函数吗?为什么会输出A,B,C
解决方案 »
- 关于记事本中查找功能,,0bject reference not set to an instance of an object 怎么解决
- winform DataGridView头放背静图
- 我要崩溃了,关于dataGridView的问题
- 数据库字段(Image)的取值问题
- 请教:如何知道程序窗体上ClientRectangle区域内某象素点的颜色值
- 面 试4?ji ji
- dataGrid两个小问题!求教!!
- 一个窗体最大化问题
- 关于arraylist请指教
- 在C#中,怎么知道用户把窗体最小化了?
- combobox, listbox, checkedlistbox相关问题
- 请教一个问题,关于如何区分T和List<T>
这句话就是调用构造函数创建对象。
一个C实例它就是一个B实例,这就好像说“白马是马、黑马也是马”一样。C继承自B,因此C的实例可以多态地用在B类实力操作中。你上面说的“把.....方法赋给......”就是“多态”的意思(虽然你的说法并不完全正确)。变量b虽然定义为类型B,但是运行时它引用了一个C类实例化对象。这就好像我们说“1234号病人是住院部病人,4567号病人是门诊病人”,我们生活中时时刻刻会使用多态的用法。面向对象编程设计中正是对应这种自然而然的习惯的。